Я вставил загрузчик мультимедиа WP 3.5 в виджет, запустив этот JavaScript при нажатии кнопки:
var frame = wp.media( {
title : 'Widget Uploader',
multiple : false,
library : { type : 'image' },
button : { text : 'Select Image' }
} );
frame.on( 'close', function() {
var attachments = frame.state().get( 'selection' ).toJSON();
imageWidget.render( widget_id, widget_id_string, attachments[0] );
} );
frame.open();
return false;
Это дает мне модальный вид с вкладками «Загрузка файлов» и «Библиотека мультимедиа», но я также хочу, чтобы на нем была вкладка «Вставить из URL», которую вы получаете, когда нажимаете кнопку «Добавить мультимедиа» при редактировании сообщения. / стр.
Я провел пару часов, копаясь в Интернете, читая исходный код и наблюдая за презентацией Дэрила Куперсмита на бэкэнде загрузчика , но так и не смог выяснить это.
Может ли кто-нибудь указать мне правильное направление? Есть ли параметр, который я могу передать wp.media (), чтобы включить его, или я должен использовать один из встроенных видов / моделей, который его включает?
Ответы:
Я копался в исходном коде по той же причине; Я хотел бы добавить «Настройки отображения вложений» в рамку «Выбрать» по умолчанию. Насколько я могу судить, это не может быть сделано путем передачи параметров в wp.media (), как нам всем хотелось бы. В настоящее время wp.media имеет два кадра («post» и «select»), и представления, которые их сопровождают, предустановлены.
Подход, который я сейчас рассматриваю, заключается в расширении media.view.mediaFrame для создания нового фрейма (на основе фрейма «select»), который включает в себя части нужного мне представления. Если я заработаю, я выложу код.
РЕДАКТИРОВАТЬ:
Йен, я получил функцию, которую хотел поработать, и потратил некоторое время, чтобы выяснить твою. wp.media () не так модульна, как могла бы быть. Он принимает только значения «select» и «post» для фрейма, при этом «select» является значением по умолчанию, поэтому вы не можете создать новый объект фрейма. Вместо этого вам нужно расширить один из двух объектов фрейма (все это находится в /wp-include/js/media-views.js), что также довольно неуклюже. Добавление части пользовательского интерфейса состоит из нескольких этапов. Вы можете начать с Select и добавить, но для вашего я решил начать с кода в рамке Post и убрать вещи из галереи. Вот мой код, работающий, но не сильно проверенный. Вероятно, есть место и для рационализации.
Это объединяет код из wp.media.view.MediaFrame.Post с кодом из media.view.MediaFrame.Select, корректируя тот факт, что он выполняется за пределами исходной области видимости. Значения для текста - это различные кнопки, и вы можете ссылаться на свой собственный объект локализации, если хотите. Значение «фильтруемый» в конструкторе библиотеки (в createStates ()) определяет, какие типы носителей будут поддерживаться.
После того, как вы расширили объект Select с помощью этого подхода, просто создайте его экземпляр таким же образом, как в настоящее время, и добавьте свой пользовательский обработчик для выбора изображения. Вставка из URL может инициировать событие, отличное от выбора при загрузке с носителя. Вероятно, было бы лучше сначала создать экземпляр вашего фрейма, а затем расширить его, чтобы другие медиа-фреймы на странице не пострадали, но я этого не пробовал.
Надеюсь, это поможет-
источник
Судя по исходному коду, типовой медиа-модал не поддерживает «Вставка из URL». Единственный способ получить эту вкладку - указать тип фрейма "post":
Недостатком является то, что заголовок указанного модала игнорируется.
источник
Дело в том, что эта вкладка возвращает внешний URL-адрес, который должен быть непосредственно вставлен в сообщение, а виджет должен возвращать идентификатор медиа. В основном, внешнее изображение должно быть загружено на сервер.
Посмотрите, как / делает ли плагин Grab & Save то, что вы хотите. ( через )
источник