问题描述
我试图扩展媒体模式,但是我不能找到任何有关它的文档/教程。我也不是骨干的主人;-)
我想添加附件到附件帖子类型的每个分类法的选择框。目前只显示一个选择框。
所以这是我想出来的。它的工作原理很好,除了它替换了默认的工具栏。
Code
/**
* 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() );
}
});
});
Original
我的结果
我想要的是
全代码
https://github.com/Horttcore/Media-Taxonomies
最佳解决方案
Backbone.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() );
}
});
会给你下面的东西 (我没有做任何彻底的错误检查,但它的工作) 。
您还应考虑使用 media.view.AttachmentFilters
和任何关于 window.wp.media;
的定制。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。