Criando um metabox para fazer upload de várias imagens

8

É possível criar uma meta box que anexa várias imagens a uma postagem?

agileapricot
fonte
Existe um tutorial completo para fazer o upload de várias imagens, adicionando caixas de meta a uma postagem, página ou tipo de postagem personalizada em emenia.es/plugin-subir-imagenes-campo-personalizado-wordpress Está em espanhol, mas eu consegui executá-lo sem problemas .

Respostas:

7

Isso depende inteiramente do que você quer dizer com "anexar".

Cada postagem do WordPress já pode ter vários anexos de mídia - fotos, documentos etc. Você os carrega usando o carregador incorporado e todos serão marcados como "anexados" a esse ID de postagem específico.

Você pode consultá-los posteriormente programaticamente em outro lugar. Por exemplo, o código a seguir lista todos os anexos de uma postagem específica (código do Snipplr ) :

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

Toda essa funcionalidade é acessível através do botão "Adicionar mídia" padrão, à direita de "Upload / Insert", na nova tela de postagem. Depois de adicionar uma imagem, você pode clicar em "Selecionar arquivos" novamente e fazer upload de uma segunda imagem. Então um terceiro. Então um quarto. Tantos quantos quiser.

Cada uma dessas imagens será "anexada" à postagem ... mesmo que não esteja inserida no conteúdo.

EAMann
fonte
Por alguma estranha razão, só posso obter esse código para gerar o primeiro anexo no modelo, mesmo que o restante esteja anexado. Alguma ideia? Aqui está o código ... dl.dropbox.com/u/497583/code/wp-attactments.txt
agileapricot
Você precisa usar algumas variáveis ​​diferentes. Você está usando os dois $poste $argsem pelo menos dois contextos diferentes, o que torna muito difícil descobrir exatamente o que você está tentando fazer a qualquer momento. Mas eu fiz teste o código que eu postei acima e ele não funcionar ...
EAMann
6

Aqui está um tutorial completo com arquivos de origem que fazem exatamente o que você deseja:
Você pode fazer o upload de várias imagens clonando o campo de entrada e também pode visualizar, excluir imagens com ajax, adicionar várias metaboxes a vários / diferentes tipos de postagem e muito mais.

http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

Philip
fonte
Eu segundo isso. Ele funciona como um encanto.
Manny Fleurmond
Embora o link que você forneceu esteja morto, o projeto em referência se transformou em um plug-in / biblioteca compatível com o desenvolvedor de pleno direito. Veja: wordpress.org/plugins/meta-box e github.com/wpmetabox ... Parece um ótimo produto.
Kerry Randolph
2

Eu também recomendo verificar http://www.wpalchemy.com . WPAlchemy é uma "classe" excelente (próxima a um plug-in) para adicionar facilmente caixas de meta personalizadas ao seu site. Eu o uso extensivamente e fiquei impressionado com a facilidade de uso e o comprometimento da comunidade de desenvolvedores e florescentes.

internetross
fonte
0

Sim, é bem possível. Veja uma resposta que recebi sobre metaboxes. Basicamente, você deseja adicionar um gancho save_poste verificar o campo nonce.

function my_save_post_callback( $post_id, $post )
{
    if ( empty($_POST) || !isset($_POST['my_custom_metabox']) || !wp_verify_nonce( $_POST['my_custom_metabox'], plugin_basename( __FILE__ ) ) )
    {
        return $post->ID;
    }

    // Handle the upload here

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
Zack
fonte