我想添加新标签到上传管理器,并从

theme_folder/images/patterns


列出列表中的图片,我尝试过类似的操作来添加标签,但由于它对我不起作用在媒体管理器侧面添加标签,但是在图像上传中该标签不可见。

function custom_media_upload_tab_name( $tabs ) {
    $newtab = array( 'tab_slug' => 'Patterns' );
    return array_merge( $tabs, $newtab );
}

add_filter( 'media_upload_tabs', 'custom_media_upload_tab_name' );

function custom_media_upload_tab_content() {
    // Add you content here.
    echo 'Hello content';
}
add_action( 'media_upload_tab_slug', 'custom_media_upload_tab_content' );


确切地说,这是我想要添加新选项卡的地方,在该选项卡中,我想列出主题文件夹中的图像。



我知道媒体管理器JS需要为此进行重写,但是老实说,我不知道从哪里开始。看来我需要为媒体管理器编写一个全新的模板才能实现此目的。

我仔细研究了所有建议,但似乎没人在读这个问题。
建议
“我尝试过类似的操作来添加选项卡,但是它对我不起作用,因为它在媒体管理器的侧面添加了选项卡,但是在图像上载时该选项卡不可见。”

因此,目前还没有人能够找到解决方案。

#1 楼

这是一个旧线程,但对我而言仍然如此。
我一直在摆弄,并想出了用于在此处添加媒体标签的代码,也许有人想继续了解该标签的句柄内容如何? :)

add_action('admin_enqueue_scripts', function(){
    wp_enqueue_script( 'my-media-tab', plugin_dir_url( __FILE__ ) . '/js/mytab.js', array( 'jquery' ), '', true );
});


然后是js文件:

var l10n = wp.media.view.l10n;
wp.media.view.MediaFrame.Select.prototype.browseRouter = function( routerView ) {
    routerView.set({
        upload: {
            text:     l10n.uploadFilesTitle,
            priority: 20
        },
        browse: {
            text:     l10n.mediaLibraryTitle,
            priority: 40
        },
        my_tab: {
            text:     "My tab",
            priority: 60
        }
    });
};


编辑:
好,所以。对于处理内容,wp.media尚未找到一种很好的方法。我当前的解决方案是2个许可人,一个用于打开媒体库,一个用于单击媒体路由器菜单;

jQuery(document).ready(function($){
    if ( wp.media ) {
        wp.media.view.Modal.prototype.on( "open", function() {
            if($('body').find('.media-modal-content .media-router a.media-menu-item.active')[0].innerText == "My tab")
                doMyTabContent();
        });
        $(wp.media).on('click', '.media-router a.media-menu-item', function(e){
            if(e.target.innerText == "My tab")
                doMyTabContent();
        });
    }
});


函数doMyTabContent();就像这样;

function doMyTabContent() {
    var html = '<div class="myTabContent">';
    //My tab content here
    html += '</div>';
    $('body .media-modal-content .media-frame-content')[0].innerHTML = html;
}


我非常确定这可以用更加精致的方式完成。谁阅读并有更好的解决方案,请填写:-)

评论


为此,thnx将对此进行调查。古老与否从来没有解决过。这正是我要求的prntscr.com/kse5yk。很好!

–贝恩
18-09-9在17:09



您是否尝试将这个wordpress.stackexchange.com/a/190604/67176和您的标签创建结合在一起?我99%确信它可以正常工作,特别是如果选项卡具有相同的ID。

–贝恩
18/09/10在10:09



是的,我首先研究了该问题,但我并不是该解决方案随附的iframe解决方案的忠实拥护者。通过iframe消息传递接收图像数据。显示内容是一回事,而处理动作是另一回事。 :)也许我错过了一些东西。

– Gubbfett
18-09-11的16:25

您好@Benn再次陷入wp.media噩梦。我在上面执行“ doMyTabContent”操作时提供的代码仅在一个事件上触发。例如:加载帖子,单击添加特色图片并关闭。单击此按钮后,为帖子添加媒体,并且不会加载任何内容,这可能是因为wp.media在新实例中(选项卡仍在其中)。我不确定如何继续前进。您在添加标签和以某种方式插入媒体方面是否取得了任何进展?想分享一些代码吗? :)

– Gubbfett
19年6月17日在17:38



@gubbfett您是否找到了解决方案?

– RaajTram
19年9月1日在6:49

#2 楼

根据WordPress Codex,您可以在媒体上传器中添加自定义标签,如下所示:

// add the tab
add_filter('media_upload_tabs', 'my_upload_tab');
function my_upload_tab($tabs) {
    $tabs['mytabname'] = "My Tab Name";
    return $tabs;
}

// call the new tab with wp_iframe
add_action('media_upload_mytabname', 'add_my_new_form');
function add_my_new_form() {
    wp_iframe( 'my_new_form' );
}

// the tab content
function my_new_form() {
    echo media_upload_header(); // This function is used for print media uploader headers etc.
    echo '<p>Example HTML content goes here.</p>';
}


希望它会为您提供帮助。

评论


为了清楚起见,该选项卡未添加到模式框的顶部,而是添加到左侧边栏。我找不到将标签实际添加到“插入媒体”标签顶部的方法。我也遇到了尝试使用已经可用的CSS样式的问题,因为内容已插入iframe中。这可能意味着您需要添加自己的CSS才能正确显示图像。只是为了完成答案,您可以使用php scandir()函数检索图像文件夹内的所有项目。

– gdaniel
2015年6月5日在16:01

#3 楼

   function axcoto_genify_media_menu($tabs) {
            $newtab = array('genify'  => __('Axcoto Genify', 'axcotogenify'));
            return array_merge($tabs, $newtab);
            }
            add_filter('media_upload_tabs', 'axcoto_genify_media_menu');

           array('genify' => __('Axcoto Genify', 'axcotogenify'));


        function axcoto_genify_media_process() {
        media_upload_header();
        echo 'hello';
        }
        function axcoto_genify_media_menu_handle() {
        return wp_iframe( 'axcoto_genify_media_process');
        }



 if ( ( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos( (string) $content_func[1], 'media' ) ) || 0 === strpos( $content_func, 'media' ) )
        wp_enqueue_style( 'media' );


评论


您的代码充满语法错误。请使用正确的php语法,因为您使用的语法甚至不存在于php中。另外,请解释您的代码做什么以及如何工作。谢谢

–Pieter Goosen
2015年6月5日在8:17



我刚刚编辑了代码。它的工作代码。尝试此代码。

–萨拉斯
2015年6月5日在8:28

请重新阅读我的评论,但跳过语法部分。转储代码不是质量的答案。请为您的代码及其工作原理添加说明

–Pieter Goosen
2015年6月5日9:21