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.
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:
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.
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!
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' );
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.