私はメディアモーダルを拡張しようとしていますが、それについてのドキュメントやチュートリアルを見つけることはできません。私もバックボーンの達人ではありません;-)
添付ファイルタイプに添付されている分類ごとに選択ボックスを追加します。現時点では1つの選択ボックスのみが表示されています。
だからこれが私が思いついたものです。デフォルトのツールバーに代わることを除けば、うまく機能します。
/**
* 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() );
}
});
});
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;
に関してカスタムなものでこれを行うことも検討すべきです。