it-swarm.com.de

Wie rufe ich den WP3.5 Media Library Manager auf?

In der Vergangenheit konnte das Media Library-Fenster folgendermaßen aufgerufen werden:

tb_show("Upload image", "media-upload.php?type=image&TB_iframe=1&width=640&height=520");

Dies funktioniert immer noch in WP3.5. Aber ich frage mich, wie ich einen neuen Medienmanager eröffnen kann? Es wird nicht mehr von Thickbox gehandhabt - tb_show().

Vielen Dank für alle Ratschläge!

4
Paul

Aus dem Artikel Verwendung von WordPress 3.5 Media Uploader in Theme Options (von codestag.com) , wie in Verwendung von WordPress 3.5) zu sehen Media Uploader in Plugins (von mikejolley.com) Mike Jolleys Artikel enthält einige nette Tricks.

Wichtiger Hinweis : Wenn die Seite, auf der der Uploader verwendet werden soll hat nicht bereits alle Media-JS-APIs, dann muss wp_enqueue_media() aufgerufen werden.


Angenommen, wir haben eine Schaltfläche wie diese in einer benutzerdefinierten Meta-Box:

<div class="uploader">
      <input type="text" name="settings[_wpse_82857]" id="_wpse_82857" />
      <input class="button" name="_wpse_82857_button" id="_wpse_82857_button" value="Upload" />
</div> 

Das folgende Skript ruft den neuen Uploader auf und füllt das Eingabetextfeld #_wpse_82857 mit dem Anhangspfad, wenn Insert into post angeklickt wird.

jQuery(document).ready(function($)
{
    var _custom_media = true,
        _orig_send_attachment = wp.media.editor.send.attachment;

    // ADJUST THIS to match the correct button
    $('.uploader .button').click(function(e) 
    {
        var send_attachment_bkp = wp.media.editor.send.attachment;
        var button = $(this);
        var id = button.attr('id').replace('_button', '');
        _custom_media = true;
        wp.media.editor.send.attachment = function(props, attachment)
        {
            if ( _custom_media ) 
            {
                $("#"+id).val(attachment.url);
            } else {
                return _orig_send_attachment.apply( this, [props, attachment] );
            };
        }

        wp.media.editor.open(button);
        return false;
    });

    $('.add_media').on('click', function()
    {
        _custom_media = false;
    });
});
10
brasofilo