Добавьте пункт меню в медиаменеджер Wordpress 3.5
Как добавить новый пункт меню под "вставить из URL" на левой боковой панели в новом медиаменеджере Wordpress 3.5?
Я смотрел на магистральный js и пытался подключиться к нему с помощью своего собственного JS, но безуспешно.
Изменить 2: Это, кажется, делает свое дело:
Http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html
Это должно подходить для простых вещей, но я думаю, что это также возможно сделать то же самое и в Javascript. Было бы неплохо, если бы был учебник/объяснение того, как работают внутренние компоненты нового медиаменеджера.
4 answers
Хорошо, я думаю, что у меня есть что-то, что действительно близко к ответу:
Я вставил свой код в суть
Вот результат :
Я построил несколько базовых объектов, чтобы соответствовать шаблону MVC: controller.Custom
отвечает за выполнение всей логики, view.Toolbar.Custom
имеет дело с кнопками панели инструментов, а view.Custom
отображает внутренний пользовательский интерфейс.
Я работаю над добавлением кнопки в "меню маршрутизатора" (добавляя что-то справа от "Медиатеки"), но система та же.
<script type="text/javascript">
jQuery(window).on('load', function() {
var media = window.wp.media,
Attachment = media.model.Attachment,
Attachments = media.model.Attachments,
Query = media.model.Query,
l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n,
NewMenuItem;
jQuery(document).on( 'click', '.insert-media', function( event ) {
var workflow = wp.media.editor.get();
var options = workflow.options;
if( undefined == NewMenuItem ) {
NewMenuItem = new wp.media.view.RouterItem( _.extend( options, { text: 'New Item!' } ) );
workflow.menu.view.views.set( '.media-menu', NewMenuItem, _.extend( options, { add: true } ) );
}
});
});
</script>
Так вот, он пока ничего не делает. Это следующий шаг!
Вы можете подключиться к фильтру media_upload_tabs
, чтобы добавить вкладку. Это метод, используемый подключаемым модулем Сетевых общих носителей:
function wpse_76980_add_upload_tab( $tabs ) {
$newtab = array( 'tab_slug' => 'Tab Name' );
return array_merge( $tabs, $newtab );
}
add_filter( 'media_upload_tabs', 'wpse_76980_add_upload_tab' );
Затем вы можете подключиться к действию media_upload_tab_slug
(где tab_slug
используется выше), чтобы отобразить содержимое вкладки:
function wpse_76980_media_upload() {
// display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );
У меня нет решения, но есть подсказки. Строки берутся из массива. Вы можете фильтровать с помощью крючка media_view_strings
. Модальное поле после щелчка - это javascript, построенный с backbone.js начиная с WP 3.5. Решение см. в /wp-includes/js/media-views.js
. Магистраль также является новой для меня, и в сценариях есть много строк исходного кода.