Agregar un elemento de menú a Wordpress 3.5 Media Manager

34

¿Cómo puedo agregar un nuevo elemento de menú debajo de "insertar desde URL" en la barra lateral izquierda en el nuevo administrador de medios de Wordpress 3.5?

He estado mirando la columna vertebral js e intenté conectarme con ella con mi propia JS pero sin éxito.

Edición 2: Esto parece hacer el truco:

enlace

Debería servir para cosas simples, pero creo que también es posible hacer lo mismo en Javascript. Estaría bien si hubiera un tutorial / explicación sobre cómo funcionan los internos del nuevo administrador de medios.

    
pregunta erezie 22.12.2012 - 17:17

4 respuestas

19

Bien, creo que tengo algo que está muy cerca de ser una respuesta:

Puse mi código en a gist

Aquí está el resultado:

Construí varios objetos Backbone para respetar el patrón MVC: el controller.Custom se encarga de hacer toda la lógica, el view.Toolbar.Custom se ocupa de los botones de la barra de herramientas y el view.Custom muestra la interfaz de usuario interna.

    
respondido por el Fabien Quatravaux 17.01.2013 - 22:50
10

Estoy trabajando para agregar un botón al "menú del enrutador" (agregando algo a la derecha de "Biblioteca multimedia"), pero el sistema es el mismo.

<script type="text/javascript">
    jQuery(window).on('load', function() {
        var media   = window.wp.media,  
        Attachment  = media.model.Attachment,
        Attachments = media.model.Attachments,
        Query       = media.model.Query,
        l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n,
        NewMenuItem;

        jQuery(document).on( 'click', '.insert-media', function( event ) {
            var workflow = wp.media.editor.get();
            var options = workflow.options;
            if( undefined == NewMenuItem ) {
                NewMenuItem = new wp.media.view.RouterItem( _.extend( options, { text: 'New Item!' } ) );
                workflow.menu.view.views.set( '.media-menu', NewMenuItem, _.extend( options, { add: true } ) );
            }

        });
    });
</script>

Ahora, no hace nada todavía. ¡Ese es el siguiente paso!

    
respondido por el Joost 30.12.2012 - 23:57
7

Puedes enganchar en el filtro media_upload_tabs para agregar la pestaña. Este es el método utilizado por el complemento Network Shared Media :

function wpse_76980_add_upload_tab( $tabs ) {
    $newtab = array( 'tab_slug' => 'Tab Name' );
    return array_merge( $tabs, $newtab );
}
add_filter( 'media_upload_tabs', 'wpse_76980_add_upload_tab' );

Luego puedes enlazar a la acción media_upload_tab_slug (donde tab_slug es como se usa arriba) para mostrar el contenido de la pestaña:

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );
    
respondido por el shea 26.12.2012 - 10:18
3

No tengo una solución, sino insinuaciones. Las cadenas obtienen de una matriz. Puede filtrar a través de gancho media_view_strings . El cuadro modal después de hacer clic es un javascript, creado con backbone.js desde WP 3.5. Ver en /wp-includes/js/media-views.js para una solución. Backbone también es nuevo para mí y los scripts tienen muchas líneas de código fuente.

    
respondido por el bueltge 22.12.2012 - 20:15

Lea otras preguntas en las etiquetas