Konkretny folder do przesyłania plików PDF w niestandardowym typie postów w wielu witrynach WP

14

Muszę filtrować przesyłane pliki do określonego folderu w przypadku niestandardowego typu posta o nazwie „dokument” tylko w przypadku plików PDF.

Do tej pory mam:

function custom_upload_directory( $args ) {
$base_directory = '/home/xxx/my_uploadfolder';
$base_url = 'http://xxxx/wp-content/uploads/my_uploadfolder';

$id = $_REQUEST['post_id'];
$parent = get_post( $id )->post_parent;
// Check the post-type of the current post

if( "document" == get_post_type( $id ) || "document" == get_post_type( $parent ) ) {
    $args['path'] = $base_directory;
    $args['url']  = $base_url;
    $args['basedir'] = $base_directory;
    $args['baseurl'] = $base_url;

}

return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );

Działa, ale z pewnymi problemami:: dowolny plik jest przekierowywany w folderze my_uploadfolder. Nie mogę też usunąć tych plików od administratora WP. Czy ktoś może pomóc?

Gerald
źródło

Odpowiedzi:

2

Powodem, dla którego masz problemy, jest zastosowanie uniwersalnego filtra upload_dir. Zamiast to zrobić, należy użyć filtru warunkowego dla upload_dirpo pierwszej kontroli ['mime-type']na application/pdf. Musisz przechwycić proces przesyłania na wp_handle_uploadhaku akcji i zmienić tam folder przesyłania. To, co opublikowałeś, zmierza we właściwym kierunku, ale musisz pracować z przychodzącymi $_POSTdanymi i zastosować tam filtr, wyszukując przesyłanie plików, ['mime-type']które WordPress przechowuje podczas procesu przesyłania.

Brian
źródło