Agregar función de filtro en el cuadro modal de medios

12

Estoy tratando de extender el modo de medios, pero no puedo encontrar ninguna documentación / tutorial al respecto. Yo tampoco soy un maestro de la columna vertebral ;-)

Quiero agregar un cuadro de selección para cada taxonomía que se adjunta al tipo de publicación adjunta. En este momento solo se muestra un cuadro de selección.

Así que esto es lo que se me ocurrió. Funciona muy bien, excepto que reemplaza la barra de herramientas predeterminada.

Código

/**
 * 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

Miresultado

Lo que quiero

Códigocompleto

enlace

    
pregunta Horttcore 07.09.2013 - 00:47

1 respuesta

8

El maravilloso mundo de Backbone.js y WP (del cual apenas sé nada).

Creo que el problema es que solo estás llamando al mismo media.view predeterminado, en cambio creo que necesitas inicializar uno nuevo.

Por ejemplo:

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

Le daría algo como a continuación (no hice ninguna comprobación exhaustiva de errores pero funciona).

También deberías considerar hacer esto con media.view.AttachmentFilters y cualquier cosa personalizada con respecto a window.wp.media; .

    
respondido por el Wyck 15.09.2013 - 08:24

Lea otras preguntas en las etiquetas