Pulsante "Aggiungi Media" nel plugin personalizzato
Sto scrivendo un plugin personalizzato e vorrei aggiungere il pulsante "Aggiungi Media".
Ho solo bisogno di caricare i media, non di recuperare alcun contenuto/dato dal file caricato.
Come posso aggiungere questo pulsante?
Grazie

Se vuoi aggiungere un pulsante per i media ai tuoi pannelli admin:
Devi usare wp_enqueue_media();
add_action ( 'admin_enqueue_scripts', function () {
if (is_admin ())
wp_enqueue_media ();
} );
Poi usa questo 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;
});
}
}
});
Usa questo 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">Imposta ID Immagine</button>
</p>

Perfetto! Volevo solo sostituire "$" con "jQuery" e tutto funziona come previsto! Grazie.

Non è necessario usare is_admin()
quando utilizzi l'hook admin_enqueue_scripts
. Inoltre, controllerei se sei nella pagina corretta con get_current_screen()
.

Per chiunque, come me, potrebbe aver bisogno anche dell'URL dell'immagine, puoi usare il seguente codice: var attachmentURL = wp.media.attachment(attachment.id).get("url");
. L'ho inserito dentro function(props, attachment)

Mostra un'anteprima della miniatura invece del numero
Come piccola modifica, ho fatto questo...
ho cambiato l'input numerico in nascosto.
ho aggiunto:
$imgid =(isset( $instance[ 'imgid' ] )) ? $instance[ 'imgid' ] : "";
$img = wp_get_attachment_image_src($imgid, 'thumbnail');
E poi... sopra il campo nascosto.
if($img != "") {
?>
<img src="<?= $img[0]; ?>" width="80px" /><br />
<?php
}
Questo mostrerà una miniatura visibile nell'interfaccia utente invece di un numero :)
