WordPress Media Manager – ограничение определенного типа mime

Я работаю над CPT, в котором мне нужно добавить некоторые метаполя, с помощью которых пользователь может подключать носители. Существует условие, чтобы привязать любое одно приложение типа mime к одному сообщению.

Я создал два мета поля, 1) тип вложения и 2) вложение. В Тип присоединения пользователь может выбирать типы вложений, такие как документ, PDF, аудио, видео или изображение. И во втором поле пользователь может выбрать носитель из медиа-менеджера.

Теперь я сталкиваюсь с проблемой, что некоторое время пользователь выбирает различные типы носителей, чем тип вложения. Например, он выбирает тип вложения Video и прикрепляет файл Image или Audio к сообщению.

Как ограничить Media Manager конкретным типом mime? Как если бы пользователь был выбран, Audio затем Media Manager будет отображать только аудиофайлы. Или, если пользователь выбран, изображение затем отображает изображения только в Media Manager.

Это не полное решение, это всего лишь направление для работы с медиа-загрузчиком

Во-первых, вам нужно знать, как реализовать Media Uploader в вашем плагине / теме. Вы можете узнать, что из файла: wp-admin/js/custom-background.js который используется WP для пользовательской фоновой страницы.

Если это слишком сложно понять, прочитайте этот учебник , он объяснит каждую строку кода для вас.

Во-вторых, когда вы реализуете Media Uploader, вы знаете, что для медиа-фрейма есть объект опции. Этот объект содержит список многих параметров, которые не документированы. Мы можем видеть их только путем просмотра файла wp-includes/js/media-views.js .

Для вашей потребности вам нужно передать type опции для library , что-то вроде этого:

 // Create a frame only if needed if ( !frame ) { var frameOptions = ( { className : 'media-frame rwmb-file-frame', multiple : true, title : 'Select files' } ); if ( mimeType ) { frameOptions.library = { type : mimeType }; } frame = wp.media( frameOptions ); } // Open media uploader frame.open(); // Remove all attached 'select' event frame.off( 'select' ); // Handle selection frame.on( 'select', function() {... } ); 

В коде есть переменная: mimeType , и вам нужно передать значение, используя jQuery, когда пользователь выбирает тип из вашего первого поля ввода.

Поскольку вы хотите ограничить пользователя просмотром медиафайла на основе метаданных типа вложения.

1. Получить сообщение мета

 get_post_meta($post->ID,'attachment-type',true) 

2.Чтобы изменить представление по умолчанию для диска с медиа-библиотекой, используя метаданные типа attacment -type

$post->ID относится к текущему вложению. Вложения, сообщения, страницы, меню – все это «сообщения» WordPress.

 $type = get_post_mime_type($post->ID); if ( $type == "image/jpeg" or $type == "image/gif" or $type == "image/png") { echo 'This attachment is a '.$type.' attachment.'; } 

Не совсем ответ на проблему с избытком, но это показывает, как вы можете получить тип mime вложения или «сообщение» по крайней мере с помощью php.

сделать это с помощью jquery, может быть:

Если у вас есть доступная ссылка на предварительную визуализацию, вы можете использовать jquery, чтобы найти файл exstension, расположенный в конце ссылки, и вы условно основаны на этом.