Ortam kalıcı kutusuna filtre işlevi ekleme


12

Medya modunu genişletmeye çalışıyorum, ancak bununla ilgili herhangi bir belge / öğretici bulamıyorum. Ben de omurga ustası değilim ;-)

Ek yazı tipine bağlı her sınıflandırma için bir seçim kutusu eklemek istiyorum. Şu anda yalnızca bir seçim kutusu gösterilmektedir.

Ben de bunu buldum. Varsayılan araç çubuğunun yerini alması dışında harika çalışır.


kod

/**
 * 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() );
        }
    });

});

orijinal

resim açıklamasını buraya girin


Benim sonucum

resim açıklamasını buraya girin


İstediğim

resim açıklamasını buraya girin


Tam kod

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

Yanıtlar:


8

Backbone.js ve WP'nin harika dünyası (ki neredeyse hiçbir şey bilmiyorum).

Bence sorun sadece aynı varsayılanı çağırıyorsunuz media.view, bunun yerine yeni bir tane başlatmanız gerektiğine inanıyorum.

Örneğin:

/**
 * 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() );
    }
});

Aşağıdaki gibi bir şey verecekti (herhangi bir kapsamlı hata denetimi yapmadım ama işe yarıyor).


resim açıklamasını buraya girin


Ayrıca, bunu media.view.AttachmentFiltersve ilgili özel bir şey yapmayı düşünmelisiniz window.wp.media;.


Harika. Teşekkürler! Her yeni WP sürümüne daha entegre hale geldiği anlaşılıyor, yakında backbone.js'yi okumalıyım.
Horttcore

1
Bu bir eklenti yaptığınız için teşekkür ederiz, bu yüzden cevaplaması kolay oldu :) Aslında WPSE soruları için bir github eklentisi yapmak için ilham verdiniz.
Wyck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.