Ajouter un élément de menu à Wordpress 3.5 Media Manager

34

Comment ajouter un nouvel élément de menu sous "insérer à partir de l'URL" dans la barre latérale gauche du nouveau gestionnaire de médias Wordpress 3.5?

J'ai jeté un œil sur l'épine dorsale et essayé de m'y accrocher avec mon propre JS, mais sans succès.

Éditer 2: Cela semble faire l'affaire:

enlace

Cela devrait suffire pour des choses simples, mais j’imagine qu’il est également possible de faire la même chose en Javascript. Ce serait bien s'il y avait un tutoriel / une explication sur le fonctionnement interne du nouveau gestionnaire de média.

    
posée erezie 22.12.2012 - 17:17

4 réponses

19

OK, je pense avoir quelque chose de très proche pour être une réponse:

Je mets mon code dans un résumé

Voici le résultat:

J'ai construit plusieurs objets Backbone pour respecter le modèle MVC: le controller.Custom est chargé de la logique, le view.Toolbar.Custom traite les boutons de la barre d'outils et le view.Custom affiche l'interface utilisateur interne.

    
réponse donnée Fabien Quatravaux 17.01.2013 - 22:50
10

Je travaille sur l'ajout d'un bouton au "menu du routeur" (en ajoutant quelque chose de droit dans "Médiathèque"), mais le système est le même.

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

Maintenant, il ne fait rien encore. C'est la prochaine étape!

    
réponse donnée Joost 30.12.2012 - 23:57
7

Vous pouvez vous connecter au filtre media_upload_tabs pour ajouter l'onglet. Il s'agit de la méthode utilisée par le plug-in Media réseau partagé :

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' );

Vous pouvez ensuite vous lier à l'action media_upload_tab_slug (où tab_slug est utilisé précédemment) pour afficher le contenu de l'onglet:

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );
    
réponse donnée shea 26.12.2012 - 10:18
3

Je n'ai pas de solution, mais des astuces. Les chaînes proviennent d'un tableau. Vous pouvez filtrer via hook media_view_strings . La boîte modale après clic est un javascript, construit avec backbone.js depuis WP 3.5. Voir dans /wp-includes/js/media-views.js pour une solution. Backbone est également nouveau pour moi et les scripts ont plusieurs lignes de source.

    
réponse donnée bueltge 22.12.2012 - 20:15

Lire d'autres questions sur les étiquettes