問題描述
如何在新的 Wordpress 3.5 媒體管理器的左側欄上添加新的菜單項 「插入從 URL」?
我一直在看着骨幹 js,試着用自己的 JS 鈎住它,但沒有成功。
編輯 2:這似乎是訣竅:
http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html
它應該做簡單的東西,但我猜它也可以做同樣的事情在 Javascript 。如果有關於新媒體經理內部工作的教程/説明,會很好。
最佳解決方案
好的,我覺得我有一些非常接近的答案:
我將代碼放在 a gist 中
結果如下:

我建立了幾個 Backbone 對象來尊重 MVC 模式:controller.Custom 負責執行所有邏輯,view.Toolbar.Custom 處理工具欄按鈕,view.Custom 顯示內部 UI 。
次佳解決方案
我正在為”router menu” 添加一個按鈕 (添加了”Media Library” 的權限),但系統是一樣的。
<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 插件使用的方法:
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 中的解決方案。 Backbone 對我來説也是新的,腳本有很多來源。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。