Специальная папка для загрузки PDF-файлов в настраиваемом типе записей в мультисайтах WP


14

Мне нужно отфильтровать закачки в определенную папку для пользовательского типа поста, называемого «документ», только для PDF-файлов.

Пока что у меня есть:

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' );

Это работает, но с некоторыми проблемами: любой тип файла перенаправляется в my_uploadfolder. Кроме того, я не могу удалить эти файлы из WP admin, как только там. Может кто-нибудь помочь?

Ответы:


2

вы могли бы рассмотреть возможность использования

if(get_post_mime_type($id) == 'application/pdf'){
   ...
}

проверить файлы PDF.

http://codex.wordpress.org/Function_Reference/get_post_mime_type

Вы также можете взглянуть на код функции wp_delete_attachment (), и вы можете подключиться к нему с помощью действия удаления вложения . Для удаления файлов вы можете использовать unlink ()

http://php.net/manual/en/function.unlink.php


2

Причина, по которой у вас возникают проблемы, заключается в том, что вы применяете универсальный фильтр upload_dir. Вместо того , чтобы делать это, используя условный фильтр для upload_dirпосле первой проверки ['mime-type']для application/pdf. Вам нужно перехватить процесс загрузки в wp_handle_uploadловушке действия и изменить там папку загрузки. То, что вы опубликовали, движется в правильном направлении, но вам нужно работать с входящими $_POSTданными и применять там фильтр, ища загружаемые файлы, ['mime-type']которые WordPress сохраняет во время процесса загрузки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.