在媒体模式框中添加过滤功能

时间:2013-09-06 作者:Horttcore

我正在尝试扩展媒体模式,但我找不到任何关于它的文档/教程。我也不是骨气大师;-)

我想为附加到附件帖子类型的每个分类添加一个选择框。目前只显示一个选择框。

这就是我想到的。它工作得很好,只是它取代了默认工具栏。

代码

/**
 * Extended Filters dropdown with taxonomy term selection values
 */
jQuery.each(mediaTaxonomies,function(key,label){

    media.view.AttachmentFilters[key] = media.view.AttachmentFilters.extend({
        className: key,

        createFilters: function() {
            var filters = {};

            _.each( mediaTerms[key] || {}, function( term ) {

                var query = {};

                query[key] = {
                    taxonomy: key,
                    term_id: parseInt( term.id, 10 ),
                    term_slug: term.slug
                };

                filters[ term.slug ] = {
                    text: term.label,
                    props: query
                };
            });

            this.filters = filters;
        }

    });

    /**
     * Replace the media-toolbar with our own
     */
    media.view.AttachmentsBrowser = media.view.AttachmentsBrowser.extend({
        createToolbar: function() {

            media.model.Query.defaultArgs.filterSource = \'filter-media-taxonomies\';

            this.toolbar = new media.view.Toolbar({
                controller: this.controller
            });

            this.views.add( this.toolbar );

            this.toolbar.set( \'terms\', new media.view.AttachmentFilters[key]({
                controller: this.controller,
                model:      this.collection.props,
                priority:   -80
            }).render() );
        }
    });

});
原始enter image description here

我的结果enter image description here

我想要什么enter image description here

完整代码

https://github.com/Horttcore/Media-Taxonomies

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

脊梁骨的奇妙世界。js和WP(我几乎什么都不知道)。

我认为问题是你只是在说同样的默认值media.view, 相反,我认为您需要初始化一个新的。

例如:

/**
 * Replace the media-toolbar with our own
 */
    var myDrop = media.view.AttachmentsBrowser;

    media.view.AttachmentsBrowser = media.view.AttachmentsBrowser.extend({
    createToolbar: function() {

        media.model.Query.defaultArgs.filterSource = \'filter-media-taxonomies\';

        myDrop.prototype.createToolbar.apply(this,arguments);

        this.toolbar.set( key, new media.view.AttachmentFilters[key]({
            controller: this.controller,
            model:      this.collection.props,
            priority:   -80
        }).render() );
    }
});
将为您提供如下内容(我没有进行任何彻底的错误检查,但确实有效)。

<小时>enter image description here

您还应该考虑使用media.view.AttachmentFilters 以及任何关于window.wp.media;.

结束

相关推荐