Botão "Adicionar mídia" no plug-in personalizado

12

Estou escrevendo um plug-in personalizado e gostaria de adicionar o botão "Adicionar mídia".

Eu só preciso fazer upload de mídia, não para recuperar qualquer conteúdo / dados do arquivo enviado.

Como posso adicionar este botão?

obrigado

Pepozzo
fonte

Respostas:

21

Se você deseja adicionar um botão adicionar mídia aos seus painéis de administração :

Você precisa usar wp_enqueue_media ();

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

Em seguida, use este 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;
            });
        }
    }
});

Use este 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
fonte
1
Perfeito! Eu só quero substituir "$" por "jQuery" e tudo funciona como esperado! Obrigado.
Libin 31/12
Não é necessário is_admin()quando você usa o gancho admin_enqueue_scripts. Além disso, eu verificaria se você está na página correta com get_current_screen().
Bjorn
Para quem, como eu, também pode precisar o URL para a imagem, você pode usar o seguinte: var attachmentURL = wp.media.attachment(attachment.id).get("url");. Eu coloquei isso dentrofunction(props, attachment)
seveninstl 06/03
2

Mostrar visualização em miniatura em vez de número

Apenas como um ajuste, eu fiz isso ...

alterou a entrada do número para oculto.

acrescentou:

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

E então ... acima do campo oculto.

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

Isso tornará uma miniatura visível no final do usuário, em vez de um número :)

Rob Mackay
fonte