问题描述
如何在新的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。