Bouton "Ajouter un média" dans un plugin personnalisé

12

J'écris un plugin personnalisé et je voudrais ajouter le bouton "Ajouter un média".

J'ai juste besoin de télécharger des médias, de ne pas récupérer de contenu / données du fichier téléchargé.

Comment puis-je ajouter ce bouton?

Merci

Pepozzo
la source

Réponses:

21

Si vous souhaitez ajouter un bouton d'ajout de média à vos panneaux d' administration :

Vous devez utiliser wp_enqueue_media ();

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

Ensuite, utilisez ce 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;
            });
        }
    }
});

Utilisez ce 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
la source
1
Parfait! Je veux juste remplacer "$" par "jQuery" et tout fonctionne comme prévu! Je vous remercie.
Libin
Pas besoin de is_admin()quand vous utilisez le crochet admin_enqueue_scripts. Aussi, je vérifierais si vous êtes sur la bonne page avec get_current_screen().
Bjorn
Pour ceux qui, comme moi, peut aussi avoir besoin l'URL de l'image, vous pouvez utiliser ce qui suit: var attachmentURL = wp.media.attachment(attachment.id).get("url");. Je mets ça à l'intérieurfunction(props, attachment)
seveninstl
2

Afficher l'aperçu des vignettes au lieu du nombre

Juste comme un ajustement, je l'ai fait ...

changé l'entrée numérique en caché.

ajoutée:

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

Et puis ... au-dessus du champ caché.

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

Cela rendra une miniature visible à la fin de l'utilisateur au lieu d'un nombre :)

Rob Mackay
la source