有没有办法指定在显示Media Uploader时显示的选项卡?

时间:2017-05-01 作者:AlanP

我使用“media\\u upload\\u tabs”挂钩在media uploader中创建了一个新选项卡。我希望能够在显示媒体上载程序时将其设置为活动或默认选项卡。这个问题与Switch to the library tab in the media uploader 上传后发生。我希望有一种更简单的方法。

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

以下代码将选择一个标记为Your Tab Name 首次启动媒体库时。

add_action( \'admin_footer-post-new.php\', \'wpse_default_media_library_tab\' );
add_action( \'admin_footer-post.php\', \'wpse_default_media_library_tab\' );
function wpse_default_media_library_tab() {
?>
<script type="text/javascript">
    var my_tab_has_been_activated = 0;
    (function($) {
        $(document).ready( function() {

            // http://wordpress-hackers.1065353.n5.nabble.com/JavaScript-events-on-media-popup-td42941.html
            $(document.body).on( \'click\', \'.insert-media\', function( event ) {
                if ( 0 == my_tab_has_been_activated ) {

                    // Locates and activates media tab with label of search_text when the Media
                    // Library is initially opened.
                    var search_text = "Your Tab Name";

                    // http://stackoverflow.com/a/36054483/3059883
                    var $search_tab = $( ".media-menu-item" ).filter( function () {
                            return $( this ).text().toLowerCase().indexOf( search_text.toLowerCase() ) >= 0;
                    }).first(); // Returns the first element that matches the text. You can return the last one with .last()
                    $search_tab.trigger( \'click\' );

                    my_tab_has_been_activated = 1;
                 }
            }); 

        });
    })(jQuery);
</script><?php
}
要自定义选项卡的代码,只需更改以下行,使其与选项卡菜单标签的文本相匹配:

var search_text = "Your Tab Name"; // Change the text as needed.
这不是最漂亮的解决方案,但对我来说确实有效。通过wp这样做会更加优雅。媒体API,但经过相当多的努力,我没能做到这一点。

自定义选项卡演示

为了完整起见,下面是一些通过this answer 其中显示了如何创建自定义媒体库选项卡。请注意,这是WordPress v3之前的版本。5做事的方式。Here\'s an answer 这涉及使用较新的JS API创建媒体选项卡。

add_filter( \'media_upload_tabs\', \'media_upload_tabs__tab_slug\' );
function media_upload_tabs__tab_slug( $_default_tabs ) {
    $newtab = array ( \'tab_slug\' => \'Your Tab Name\' );
    $tabs = array_merge( $_default_tabs, $newtab );

    return $tabs;
}

add_action( \'media_upload_tab_slug\', \'media_upload_tab_slug__content\' );
function media_upload_tab_slug__content() {
    wp_iframe( \'media_upload_tab_slug_content__iframe\' );
}

function media_upload_tab_slug_content__iframe() {
    ?>
    <div>tab_slug: Add your content here.</div><?php
}

相关推荐