新しい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で同じことをすることも可能であると思います。新しいメディアマネージャの内部構造がどのように機能するかについてのチュートリアル/説明があればいいでしょう。
はい、答えに近いものがあると思います。
私は自分のコードを 要点に入れました
これが結果です。
MVCパターンを尊重するために、いくつかのBackboneオブジェクトを作成しました。controller.Custom
はすべてのロジックを担当し、view.Toolbar.Custom
はツールバーボタンを扱い、view.Custom
は内部UIを表示します。
私はボタンを「ルーターメニュー」に追加することに取り組んでいます(「メディアライブラリ」の右に何かを追加する)、しかしシステムは同じです。
<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
フィルタにフックすることができます。これは、 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' );
解決策はありませんが、ヒントがあります。文字列は配列から取得されます。フックmedia_view_strings
でフィルタリングできます。クリック後のモーダルボックスはjavascriptです。WP 3.5以降、backbone.jsを使用して構築しています。解決策については/wp-includes/js/media-views.js
を参照してください。バックボーンも私にとっては新しいもので、スクリプトには多くの行があります。