Вопрос: Как создать разные фреймы медиа загрузки / библиотеку фильтров в зависимости от настраиваемого действия

Вот в чем дело. Я использую WP Media Uploader на веб-интерфейсе. Мне нужно, чтобы он вел себя по-разному в зависимости от определенного действия.

Я прикрепляю носитель к отдельной странице определенного пользовательского типа.

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

var uploader = wp.media({        title: 'Upload Image',        multiple: false    }).open()    .on('select', function(e){    //Some code here    });

Затем я фильтрую библиотеку, чтобы показать только определенные вложения в библиотеке, используя этот фильтр здесь и используя $ _REQUEST, чтобы получить текущий идентификатор записи:

function show_current_user_attachments( $query = array() ) {   //Modify the query here to show current user attachments only   return $query;}add_filter( 'ajax_query_attachments_args', 'show_current_user_attachments', 10, 1 );

Так пока все хорошо, но мне нужна еще одна отдельная логика в текущем посте. Мне нужно запустить другой wp.media, который полностью отличается от этого. Он не должен иметь функции загрузки изображений и должен показывать разные вложения в библиотеке.

Проще говоря, мой вопрос - как я могу расширить wp.media и передать разные аргументы, которые я могу обработать в фильтр 'ajax_query_attachments_args', чтобы у меня было 2 совершенно разных медиа-всплывающих окна с разной функциональностью?

Заранее спасибо!

Ответы и комментарии:

Это отличное начало. Теперь вы можете придумать, как я могу определить, какой из медиакадров используется, чтобы я мог отфильтровать библиотеку изображений в зависимости от этого?
Создан 24-03-2017 08:58 0v3rth3d4wn

Проверьте параметр «библиотека» в wp.media. Это ограничивает модальные по типу. Чем еще вам нужно ограничиться?
Создан 26-03-2017 06:59 Samyer

Вам нужно будет создать два разных медиа-мода, которые будут запускаться в зависимости от вашего события клика. Вот код из недавнего проекта, в котором я добавил эти кнопки в визуальный редактор tinyMCE:
JQuery (документ) .ready (функция ($) {
$ (document) .on ('click', '.mce-my_upload_button', upload_image_tinymce);
$ (document) .on ('click', '.mce-my_upload_pdf_button', upload_pdf_tinymce);

function upload_image_tinymce (e) {
    e.preventDefault ();
    var $ input_field = $ ('. mce-my_input_image');
    var custom_uploader = wp.media.frames.file_frame = wp.media ({
        title: 'Add Image',
        кнопка: {
            текст: «Добавить изображение»
        },
         библиотека: {
            тип: «изображение»
        },
        несколько: ложь
    });
    custom_uploader.on ('select', function () {
        var attachment = custom_uploader.state (). get ('selection'). first (). toJSON ();
        $ Input_field.val (attachment.sizes.medium.url);
    });
    custom_uploader.open ();
}
функция upload_pdf_tinymce (e) {
    e.preventDefault ();
    var $ input_field = $ ('. mce-my_input_pdf');
    var custom_uploader = wp.media.frames.file_frame = wp.media ({
        название: «Добавить PDF»,
        кнопка: {
            текст: «Добавить PDF»
        },
        библиотека: {
            Тип: «Приложение / PDF»
        },
        несколько: ложь
    });
    custom_uploader.on ('select', function () {
        var attachment = custom_uploader.state (). get ('selection'). first (). toJSON ();
        $ Input_field.val (attachment.url);
    });
    custom_uploader.open ();
}});

Надеюсь это поможет!
Создан 24-03-2017 02:39 Samyer21817