如何在新的Wordpress 3.5 Media Manager左侧边栏的“从URL插入”下方添加新菜单项?

我一直在查看主干js,并尝试着钩住

编辑2:
这似乎可以解决问题:

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

它应该对简单的东西起作用,但是我想在Javascript中也可以做同样的事情。如果有一个有关新媒体管理器内部原理的教程/说明,那就太好了。

评论

您的新菜单应该做什么?添加菜单项不是主要问题,并且您处在正确的轨道上,但是如果应该使菜单显示与默认视图不同的任何东西,只需更改设置,Backbone就需要菜单项的视图...那也是我卡住的地方...

单击菜单项应该显示不同的视图。显示菜单项将是第一步

关于我的150点bouny:希望继续保持原始海报的目标,即使用基于JS的方法在“从URL插入”下面添加新的“状态”菜单项,并将新视图与“帖子编辑器”的主要媒体模式相关联。 />
@erezie,您是否可以将答案标记为Fabien Quatravaux提供的答案?

#1 楼

好的,我认为我确实有一个很接近答案的东西:

我构建了几个Backbone对象来尊重MVC模式:controller.Custom负责执行所有逻辑,view.Toolbar.Custom处理工具栏按钮,而view.Custom显示内部UI。

评论


到目前为止缺少什么?

– kaiser
13年1月18日在11:55

+1好开始!但是,是的,快照无需花费很多时间就能实现,而无需我们知道如何执行。并且,在评论的内容中拉上注释// //建立一个空视图(需要做更多的工作)。

–brasofilo
13年1月18日在14:54

我添加了屏幕截图以显示结果。现在要做的下一件事是实现视图本身,该视图将显示HTML组件并对用户交互做出反应。

–法比恩·夸特拉沃(Fabien Quatravaux)
13年1月18日在16:24

这看起来很酷,这绝对是一个开始!值得一提的赏金,但如果您有需要,可以随时将其提升到一个新的水平。

–斯科特·金斯利·克拉克(Scott Kingsley Clark)
2013年1月19日0:00

谢谢你的赏赐斯科特!我肯定会更深入一点,因为在工作中需要它。我将在可用的代码尽快寄回这里。

–法比恩·夸特拉沃(Fabien Quatravaux)
13年1月19日在21:33

#2 楼

我正在为“路由器菜单”添加一个按钮(向“媒体库”添加一些权限),但是系统是相同的。

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


现在,它什么也没做。那是下一步!

评论


有运气吗?我真正想看到的是基于JS的解决方案,而不是原始海报编辑中已经提到的iframe PHP解决方案和另一个答案

–斯科特·金斯利·克拉克(Scott Kingsley Clark)
2013年1月15日19:21



#3 楼

您可以插入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' );


评论


这是添加标签的旧方法。尽管它仍在工作,但我怀疑WP正在远离它。

–珍妮
2012年12月28日下午3:11

@Jenny,我想我们可以指望这个过滤器了。相关门票。 (:哦,还有+1,不错的片段:)

–brasofilo
2012-12-30 23:12



#4 楼

我没有解决方案,但有提示。字符串来自数组。您可以通过钩子media_view_strings进行过滤。单击后的模式框是一个javascript,自WP 3.5起就使用lobb.js构建。请参阅/wp-includes/js/media-views.js中的解决方案。 Backbone对我来说也是新的,脚本有很多源代码。

评论


这是一个很好的提示,但我认为这没有实现。可以通过php过滤器对media.view.settings js var进行调整,以添加新标签页,然后通过iframe呈现这些标签页(请参见media-views.js中的createIframeStates方法)。

–法比恩·夸特拉沃(Fabien Quatravaux)
13年1月17日在16:33



也许您可以在您的博客中添加要点教程。在媒体视图中添加一个简单的链接,并在单击该链接时添加自定义操作?您当前的要领非常复杂,并且有很多自定义操作。

– Bueltge
13年2月21日在9:51

不幸的是,我没有找到另一种更简单的方法来实现这一目标。这段代码仅做一件基本的事情:在左侧添加一个自定义菜单项,它具有自己的内容视图,工具栏和控制器。所有这些构造都是构建Backbone所需的视图和控制器所必需的。但是,如果您有一个更简单的解决方案,请随时提出我的要旨。

–法比恩·夸特拉沃(Fabien Quatravaux)
13年2月22日在10:38

是的,我已经看到并测试了,效果很好。但我认为这很好,您还可以在默认媒体屏幕内仅为按钮或链接和回调函数创建要点,而不是示例中的其他部分。

– Bueltge
13年2月22日在13:56