Schaltfläche "Medien hinzufügen" im benutzerdefinierten Plugin

12

Ich schreibe ein benutzerdefiniertes Plugin und möchte die Schaltfläche "Medien hinzufügen" hinzufügen.

Ich muss nur Medien hochladen, um keine Inhalte / Daten aus der hochgeladenen Datei abzurufen.

Wie kann ich diese Schaltfläche hinzufügen?

Vielen Dank

Pepozzo
quelle

Antworten:

20

Wenn Sie Ihren Admin- Panels eine Schaltfläche zum Hinzufügen von Medien hinzufügen möchten :

Sie müssen wp_enqueue_media () verwenden.

add_action ( 'admin_enqueue_scripts', function () {
    if (is_admin ())
        wp_enqueue_media ();
} );

Dann benutze dieses js:

jQuery(document).ready(function() {
    var $ = jQuery;
    if ($('.set_custom_images').length > 0) {
        if ( typeof wp !== 'undefined' && wp.media && wp.media.editor) {
            $('.set_custom_images').on('click', function(e) {
                e.preventDefault();
                var button = $(this);
                var id = button.prev();
                wp.media.editor.send.attachment = function(props, attachment) {
                    id.val(attachment.id);
                };
                wp.media.editor.open(button);
                return false;
            });
        }
    }
});

Verwenden Sie dieses HTML:

<p>
    <input type="number" value="" class="regular-text process_custom_images" id="process_custom_images" name="" max="" min="1" step="1">
    <button class="set_custom_images button">Set Image ID</button>
</p>
tiltedtimmy
quelle
1
Perfekt! Ich möchte nur "$" durch "jQuery" ersetzen und alles funktioniert wie erwartet! Vielen Dank.
Libin
Keine Notwendigkeit, is_admin()wenn Sie den Haken verwenden admin_enqueue_scripts. Außerdem würde ich prüfen, ob Sie auf der richtigen Seite mit sind get_current_screen().
Björn
2

Miniaturansicht anstelle der Nummer anzeigen

Nur als Tweak habe ich das gemacht ...

änderte die Zahleneingabe in versteckt.

hinzugefügt:

$imgid =(isset( $instance[ 'imgid' ] )) ? $instance[ 'imgid' ] : "";
$img    = wp_get_attachment_image_src($imgid, 'thumbnail');

Und dann ... über dem versteckten Feld.

if($img != "") {
?>
  <img src="<?= $img[0]; ?>" width="80px" /><br />
<?php 
}

Dadurch wird auf der Benutzerseite ein Miniaturbild anstelle einer Zahl angezeigt :)

Rob Mackay
quelle