it-swarm.com.de

Fügen Sie Wordpress 3.5 Media Manager ein Menüelement hinzu

Wie kann im neuen Wordpress 3.5 Media Manager ein neuer Menüpunkt unter der "Einfügen von URL" in der linken Seitenleiste hinzugefügt werden?

Ich habe mir das Backbone angesehen und versucht, es mit meinem eigenen JS zu verbinden, aber ohne Erfolg.

Edit 2: Dies scheint den Trick zu tun:

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

Es sollte für einfache Dinge reichen, aber ich denke, es ist auch möglich, dasselbe in Javascript zu tun. Wäre nett, wenn es ein Tutorial/eine Erklärung darüber geben würde, wie die Interna des neuen Medienmanagers funktionieren.

34
erezie

OK, ich denke, dass ich etwas habe, das wirklich nah dran ist, eine Antwort zu sein:

Ich habe meinen Code in a Gist

Hier ist das Ergebnis: custom menu screenshot

Ich habe mehrere Backbone-Objekte erstellt, um das MVC-Muster zu berücksichtigen: Der controller.Custom übernimmt die gesamte Logik, der view.Toolbar.Custom die Schaltflächen der Symbolleiste und der view.Custom zeigt die innere Benutzeroberfläche an.

19

Ich arbeite daran, eine Schaltfläche zum "Router-Menü" hinzuzufügen (etwas rechts von "Medienbibliothek" hinzuzufügen), aber das System ist das gleiche.

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

Jetzt macht es noch nichts. Das ist der nächste Schritt!

10
Joost

Sie können sich in den media_upload_tabs-Filter einbinden, um die Registerkarte hinzuzufügen. Dies ist die Methode, die vom Network Shared Media Plugin verwendet wird:

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

Sie können sich dann mit der Aktion media_upload_tab_slug verbinden (wobei tab_slug wie oben verwendet wird), um den Inhalt der Registerkarte anzuzeigen:

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );
7
shea

Ich habe keine Lösung, aber Hinweise. Die Zeichenfolgen stammen aus einem Array. Sie können über Hook media_view_strings filtern. Die modale Box nach dem Klick ist ein Javascript, erstellt mit backbone.js seit WP 3.5. Eine Lösung finden Sie in /wp-includes/js/media-views.js. Backbone ist auch neu für mich und die Skripte haben viele Quelltextzeilen.

3
bueltge