Добавьте пункт меню в медиаменеджер 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. Было бы неплохо, если бы был учебник/объяснение того, как работают внутренние компоненты нового медиаменеджера.

Author: erezie, 2012-12-22

4 answers

Хорошо, я думаю, что у меня есть что-то, что действительно близко к ответу:

Я вставил свой код в суть

Вот результат : custom menu screenshot

Я построил несколько базовых объектов, чтобы соответствовать шаблону MVC: controller.Custom отвечает за выполнение всей логики, view.Toolbar.Custom имеет дело с кнопками панели инструментов, а view.Custom отображает внутренний пользовательский интерфейс.

 20
Author: Fabien Quatravaux, 2013-01-21 15:42:15

Я работаю над добавлением кнопки в "меню маршрутизатора" (добавляя что-то справа от "Медиатеки"), но система та же.

<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>

Так вот, он пока ничего не делает. Это следующий шаг!

 10
Author: Joost, 2012-12-30 22:57:22

Вы можете подключиться к фильтру 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' );
 7
Author: shea, 2012-12-26 09:18:46

У меня нет решения, но есть подсказки. Строки берутся из массива. Вы можете фильтровать с помощью крючка media_view_strings. Модальное поле после щелчка - это javascript, построенный с backbone.js начиная с WP 3.5. Решение см. в /wp-includes/js/media-views.js. Магистраль также является новой для меня, и в сценариях есть много строк исходного кода.

 3
Author: bueltge, 2012-12-22 19:15:09