web-dev-qa-db-ja.com

Wordpress 3.5 Media Managerにメニュー項目を追加する

新しいWordpress 3.5 Media Managerの左側のサイドバーにある[Insert From URL]の下に新しいメニュー項目を追加する方法

私はバックボーンjsを見てきましたが、私自身のJSでそれにフックすることに私の手を試みましたが成功しませんでした。

編集2:これはトリックをやっているようだ:

http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html

それは単純なことのためにするべきですが、私はJavascriptで同じことをすることも可能であると思います。新しいメディアマネージャの内部構造がどのように機能するかについてのチュートリアル/説明があればいいでしょう。

34
erezie

はい、答えに近いものがあると思います。

私は自分のコードを 要点に入れました

これが結果です。 custom menu screenshot

MVCパターンを尊重するために、いくつかのBackboneオブジェクトを作成しました。controller.Customはすべてのロジックを担当し、view.Toolbar.Customはツールバーボタンを扱い、view.Customは内部UIを表示します。

19

私はボタンを「ルーターメニュー」に追加することに取り組んでいます(「メディアライブラリ」の右に何かを追加する)、しかしシステムは同じです。

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

タブを追加するためにmedia_upload_tabsフィルタにフックすることができます。これは、 Network Shared Media pluginによって使用される方法です。

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
shea

解決策はありませんが、ヒントがあります。文字列は配列から取得されます。フックmedia_view_stringsでフィルタリングできます。クリック後のモーダルボックスはjavascriptです。WP 3.5以降、backbone.jsを使用して構築しています。解決策については/wp-includes/js/media-views.jsを参照してください。バックボーンも私にとっては新しいもので、スクリプトには多くの行があります。

3
bueltge