web-dev-qa-db-fra.com

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

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 à l'épine dorsale et essayé de m'y accrocher avec mon propre JS, mais sans succès.

Edit 2: Cela semble faire l'affaire:

http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html

Cela devrait suffire pour des choses simples, mais je suppose 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édias.

34
erezie

OK, je pense que j'ai quelque chose qui est vraiment proche d'être une réponse:

Je mets mon code dans un Gist

Voici le résultat: custom menu screenshot

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

19
Fabien Quatravaux

Je travaille sur l'ajout d'un bouton au "menu du routeur" (en ajoutant quelque chose à droite de "Media Library"), 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!

10
Joost

Vous pouvez vous connecter au filtre media_upload_tabs pour ajouter l'onglet. C'est la méthode utilisée par le Réseau partagé plugin:

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 connecter à 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' );
7
shea

Je n'ai pas de solution, mais des allusions. 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.

3
bueltge