Спеціальна папка для завантаження 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_upload. Крім того, я не можу видалити ці файли з адміністратора WP один раз там. Може хтось допоможе?

Відповіді:


2

ви можете розглянути можливість використання

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

перевірити наявність PDF-файлів.

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

Ви також можете подивитися на код за функцією wp_delete_attachment () і зможете підключитись до нього за допомогою дії видалення вкладення . Для видалення файлів можна скористатись від’єднанням ()

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.