Como posso fazer upload de imagens em massa e criar automaticamente postagens para cada uma ao mesmo tempo?

9

Eu sei enviar várias imagens para uma postagem existente, mas esse é um cenário diferente. Isso é para um grande catálogo de ativos, com cada postagem personalizada representando um recurso de imagem (assim, uma única imagem é atribuída como "imagem em destaque" para cada postagem).

Todo o sistema funciona muito bem para a criação de um ativo por vez, mas consome muito tempo. Preciso fazer o "lote" para enviar várias imagens de uma só vez, criar uma nova postagem para cada imagem e anexar a imagem à nova postagem como "imagem em destaque".

Não haverá conteúdo de texto inserido para cada postagem - apenas alguns metadados e atribuições de taxonomia personalizada, portanto, deve ser possível atribuir em lote os metadados e a taxonomia durante o processo de criação do lote.

Eu pesquisei soluções de pós-criação de XML-RPC (que normalmente não manipulam upload / atribuição de imagens) para plugins que puxam arquivos de um diretório de servidor para a biblioteca de mídia (que não cobre pós-criação) e jquery uploaders múltiplos arquivos (que basicamente apenas despejar arquivos em um diretório).

Eu sou relativamente versado em php, tendo construído plugins e temas, mas estou perplexo em como lidar com esse processo, já que ele requer a primeira etapa de colocar os arquivos no servidor temporariamente, gerando posts baseados nos arquivos enviados e atribuir alguns metadados de identificação ao lote inteiro.

Espero que isso possa ser feito em um painel de administração personalizado, mas se eu tiver que fazer isso fora do wp-admin, tudo bem também ...

Idéias?

    
por somatic 09.09.2010 / 23:23

3 respostas

5

Existe este plug-in: Plugin de mensagens em destaque automático

Na página do plug-in:

  

Postagens da imagem em destaque automática cria uma nova postagem com uma Imagem em destaque sempre que uma imagem é carregada. Por meio da página de configurações do plug-in, você pode definir a imagem para publicar e atribuir-se a um dos seus outros tipos de postagem personalizados e / ou formatos de postagem.

Basicamente, todas as imagens carregadas geram uma postagem (do tipo de postagem escolhido) e são definidas como a imagem em destaque dessa postagem.

Eu instalei isso na minha máquina local. A página de configurações é semelhante a essa e permite que você selecione o tipo de postagem, incluindo os tipos de postagem personalizados, para os quais deseja atribuir uploads de fotos e o status de publicação desejado.

Paracolocaroplug-inemprática,navegueatéotipodepostagemescolhido,abraumanovapostagemeenvieamídia.

Parafazeruploaddefotosemmassa,bastadestacarváriasfotosnacaixadediálogo"upload". Estou destacando 8 fotos aqui, mas não vejo razão para que não seja 80 ou 800, a menos que haja limites que eu não conheça no aplicativo de envio de imagens do wordpress.

Ostítulosdaspostagenssãodefinidospelosnomesdosarquivosdeimagem.Vocêdevepodertrabalharcomissoechamá-losnoseutemacomthe_title()

EutesteilocalmenteeestáfuncionandonoWordpress3.6.

Tenhocertezadequeháumamaneiramaisrobustaouflexívelderealizarisso,mas,nessecaso,oplug-inparecefazerexatamenteoquevocêestápedindo,comexceçãodaatribuiçãodemetadados.Talvezoutrapessoapudessedetalharessaparte.

Sevocêprecisassedeconteúdodepostagemgeradodinamicamente,vocêpoderiapelomenoscomeçarcomoplug-inerepetirapartirdaí.Umaideiaseriausarpost-formatsoupage-templatesparadeterminarcomoaspostagenssãoexibidas.

Nota:Verifiquesevocêtemtodososimage_sizesdefinidosemfunctions.php.Euodiariaterquedesfazer/excluir10.000fotosouexecutar"miniaturas regeneradas" extremamente longas só porque esqueci ou alterei o tamanho da imagem!

    
por timshutes 15.08.2013 / 03:23
4

Este script é uma prova de conceito (testado e funcionando), não é um plug-in e foi feito para ser hackeado, ele pressupõe algumas coisas:

  1. Ele usa wp_insert_post , por isso é aconselhável não conectá-lo a nenhum gancho de administrador, portanto, basta executá-lo uma vez!
  2. As imagens devem estar na pasta wp-content\uploads , e isso exigiria mais aros para avançar. O exemplo usa uma pasta personalizada chamada \images na pasta de uploads, você pode alterar esta parte.
  3. Ele não faz nenhuma verificação de erro, eu só testei em uma pasta com 20 imagens para que os resultados possam variar:)

O código abaixo irá percorrer a pasta wp-content\uploads\images e criar um título de postagem com base no nome da imagem que está sendo anexada a ele. Você provavelmente quer mudar isso para algo melhor ou possível inserir meta-dados usando outros dados que você tem (talvez Exif).

function WPSE_1595_image_post() {

    // We need to use the default uploads dir
    $wp_upload_dir =  wp_upload_dir();
    // The actual folder
    $wp_upload_images = $wp_upload_dir['basedir'] . '/images';

    require_once(ABSPATH . 'wp-admin/includes/image.php');

    foreach (new DirectoryIterator($wp_upload_images) as $fileInfo) {

        if($fileInfo->isDot()) continue;

        $image_base = $fileInfo->getFilename();
        $image_name = pathinfo($fileInfo, PATHINFO_FILENAME);

        //Customize this post data as you wish
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // We need the ID for the attachment
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         //Customize this attachment data as you wish
        $attachment = array(
             'guid' => $wp_upload_dir['url'] . '/' . $image_name, 
             'post_mime_type' => $wp_filetype['type'],
             'post_title' => 'child-' . $image_name,
             'post_content' => '',
             'post_status' => 'inherit'
        );

        $imagefile = $wp_upload_images . '/' . $image_base;
        $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile );

        wp_update_attachment_metadata( $attach_id, $attach_data );
    }   
}

Para mais de alguns milhares de imagens, você provavelmente teria mais facilidade em usar:

por Wyck 14.08.2013 / 07:24
1

A "Pasta de uploads de limpeza, estrutura db da biblioteca de mídia" A pergunta tem algumas sugestões de plugins que podem estar relacionadas - embora não exatamente o que você está fazendo. Mas talvez a informação seja útil.

    
por hakre 14.09.2010 / 19:39