
🔧 WP All Import: como reunir todas as imagens de um artigo numa única galeria
Importou uma centena de artigos através do WP All Import e as imagens espalharam-se pelo conteúdo de forma aleatória: esticadas a largura total nuns sítios, espremidas contra o texto noutros e como links quebrados no resto. Percorrer cada artigo manualmente é uma noite desperdiçada.
Há uma forma de reunir tudo numa única galeria. Automaticamente, sem edição manual de conteúdo. O método funciona tanto para importações recentes como para artigos carregados há um mês. Abaixo estão duas abordagens: a fácil (em tempo real, via o hook pmxi_gallery_image) e a posteriori (com atualização em massa). Ambas testadas no WP All Import 4.9+.
💡 Resumo rápido:
- Prepare CSV ou XML: links das imagens como URLs completos, um por linha
- No modelo de importação, configure a secção Imagens e indique o campo com as imagens
- Adicione o hook
pmxi_gallery_imageaofunctions.php, a galeria monta-se sozinha durante a importação - Para artigos antigos: uma função para substituir
<img>pelo shortcode da galeria e atualização em massa
Como preparar imagens para importação
Antes de executar a importação, os links das imagens devem estar no formato correto. O WP All Import descarrega imagens apenas se o URL for completo, direto e apontar para um ficheiro, não para uma página HTML.
Suponha que no site antigo a galeria tem este aspeto:
1 <a href="/cache/images/photo1.jpg" data-lightbox="group:1" title="Photo 1"> 2 <img src="/cache/images/photo1_thumb.jpg" alt="Photo 1"> 3 </a> 4 <a href="/cache/images/photo2.jpg" data-lightbox="group:1" title="Photo 2"> 5 <img src="/cache/images/photo2_thumb.jpg" alt="Photo 2"> 6 </a>
Após a análise, no ficheiro CSV para importação, os links devem tornar-se URLs completos, um por linha, sem invólucro HTML:
1 http://newsite.com/files/photo1.jpg 2 http://newsite.com/files/photo2.jpg
Onde http://newsite.com é o domínio do site para o qual está a importar. Crítico: se os links forem relativos ou apontarem para o domínio antigo, o WP All Import não irá detetar os ficheiros e não os carregará para a biblioteca de media.
Os links no corpo do artigo devem corresponder um a um aos que fornece ao plugin para carregamento. Caso contrário, após a importação, algumas tags <img> permanecerão com URLs antigos e não serão incluídas na galeria.
Configurar o modelo de importação no WP All Import
Na interface do plugin, vá ao modelo de importação. A secção principal aqui é Imagens. Tem este aspeto:

Na secção Imagens, especifique o campo que contém os links das imagens. Normalmente é uma célula CSV separada (por exemplo, gallery_images), onde os links são listados com um separador, por predefinição |:
1 http://newsite.com/files/photo1.jpg | http://newsite.com/files/photo2.jpg | http://newsite.com/files/photo3.jpg
O WP All Import irá analisar a string, descarregar cada imagem e adicioná-la à biblioteca de media do WordPress. Mas, para já, as imagens são apenas anexadas ao artigo como anexos. Vamos montar a galeria separadamente.
Certifique-se de verificar como o plugin trata o carregamento. Clique em Pré-visualizar e Testar e depois em Executar Teste. Uma marca verde junto ao número de imagens significa que está tudo configurado corretamente. Uma cruz vermelha significa que deve verificar os URLs: devem ser completos e diretos.
Antes de iniciar a importação, carregue os ficheiros de imagem para a pasta files na raiz do site, se o plugin obtiver as imagens do servidor e não de URLs externos.
Como montar a galeria em tempo real: hook pmxi_gallery_image
A forma mais limpa é montar a galeria logo durante a importação. O WP All Import fornece o hook pmxi_gallery_image, que é acionado para cada imagem carregada. Interceta o ID do anexo e guarda-o no campo meta do artigo no formato desejado.
Três variantes testadas, escolha de acordo com o seu tema ou plugin de galeria.
Variante 1: array de IDs de anexos. Adequado para a maioria dos temas que esperam a galeria como um array de IDs de anexos:
1 function my_gallery_ids($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $gallery = get_post_meta($post_id, $key, true); 5 6 if (empty($gallery)) { 7 $gallery = array(); 8 } 9 10 if (!in_array($att_id, $gallery)) { 11 $gallery[] = $att_id; 12 update_post_meta($post_id, $key, $gallery); 13 } 14 } 15 add_action('pmxi_gallery_image', 'my_gallery_ids', 10, 4);
Variante 2: array de URLs. Se o tema precisar de links diretos para imagens em tamanho real:
1 function my_gallery_urls($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $size = 'full'; 5 $gallery = get_post_meta($post_id, $key, true); 6 7 if (empty($gallery)) { 8 $gallery = array(); 9 } 10 11 if (!isset($gallery[$att_id])) { 12 $src = wp_get_attachment_image_src($att_id, $size); 13 $gallery[$att_id] = $src[0]; 14 update_post_meta($post_id, $key, $gallery); 15 } 16 } 17 add_action('pmxi_gallery_image', 'my_gallery_urls', 10, 4);
Variante 3: string com separador. Se o campo meta armazena IDs separados por vírgula (formato "23,25,31"):
1 function my_gallery_string($post_id, $att_id, $filepath, $is_keep_existing_images) 2 { 3 $key = '_my_gallery'; 4 $sep = ','; 5 $gallery = get_post_meta($post_id, $key, true); 6 7 if (is_string($gallery) || empty($gallery) || $gallery == false) { 8 $gallery = explode($sep, $gallery); 9 if (!in_array($att_id, $gallery)) { 10 if ($gallery[0] == '') unset($gallery[0]); 11 $gallery[] = $att_id; 12 update_post_meta($post_id, $key, implode($sep, $gallery)); 13 } 14 } 15 } 16 add_action('pmxi_gallery_image', 'my_gallery_string', 10, 4);
O código é inserido no functions.php do tema. Após a conclusão da importação, o hook pode ser removido, o campo meta já está preenchido. Vantagem deste método: a galeria fica pronta imediatamente após a importação, sem passagens adicionais.
O que fazer com artigos já importados
Se os artigos já foram carregados e as imagens estão no conteúdo como tags <img> normais, precisa de uma abordagem diferente. Percorra todos os artigos e substitua as tags pelo shortcode da galeria.
A função abaixo recolhe todos os IDs de anexos de um artigo e substitui <img> no conteúdo por [gallery ids="..."]:
1 function replace_post_images_with_gallery($post_id) 2 { 3 $post = get_post($post_id); 4 if (!$post) return; 5 6 $attachments = get_attached_media('image', $post_id); 7 8 if (empty($attachments)) return; 9 10 $ids = array(); 11 foreach ($attachments as $att) { 12 $ids[] = $att->ID; 13 } 14 15 $gallery_shortcode = '[gallery ids="' . implode(',', $ids) . '"]'; 16 $content = preg_replace('/<img[^>]+>/i', '', $post->post_content); 17 $content = $gallery_shortcode . "\n\n" . $content; 18 19 wp_update_post(array( 20 'ID' => $post_id, 21 'post_content' => $content, 22 )); 23 }
Depois execute uma atualização em massa:
- No painel de administração, vá à lista de todos os artigos.
- Nas opções de ecrã, defina o número de itens para 50 (ideal para que o servidor não bloqueie).
- Selecione todos os artigos, escolha "Atualizar" nas ações em massa e aplique.
O WordPress percorrerá cada artigo, chamará save_post e hooks relacionados. Se a função no functions.php estiver ligada ao save_post, será executada. Após a conclusão, **remova o código do **functions.php, caso contrário, a cada gravação de artigo, o conteúdo será reconstruído novamente.
⁉️🤔 Perguntas frequentes
WP All Import** não está a descarregar imagens durante a importação, o que está errado?**
Os links no ficheiro de importação devem ser URLs completos (com
http://ouhttps://) e levar diretamente a um ficheiro de imagem, não a uma página HTML. Verifique as permissões de escrita emwp-content/uploads: se o servidor não conseguir gravar o ficheiro, a importação da imagem é silenciosamente ignorada. O motivo mais comum é uma incompatibilidade entre os links no corpo do conteúdo e no campo Imagens do modelo. Se o conteúdo tiverhttp://oldsite.com/img.jpge em Imagens for fornecidohttp://newsite.com/files/img.jpg, o plugin não os ligará e a imagem permanecerá quebrada. Os URLs devem corresponder um a um.
Porque é que o pmxi_gallery_image é melhor do que o pós-importação?
O hook é acionado para cada imagem no momento do carregamento, a galeria fica pronta logo após a importação, sem uma segunda passagem. O pós-importação via
wp_update_postsobrecarrega o servidor: mil artigos geram mil chamadassave_post. Para volumes até 100 artigos, a diferença é negligenciável, mas para grandes migrações, o hook poupa horas. Além disso, opmxi_gallery_imagedá acesso ao caminho do ficheiro carregado e ao ID do anexo, podendo prescrever imediatamente qualquer lógica: distribuir por pastas, adicionar ao slider, sincronizar com CDN. O pós-importação não oferece essa flexibilidade.
É necessário remover o código do functions.php após a importação?
Sim. Se a função estiver pendurada no
pmxi_gallery_image, é acionada em QUALQUER adição de anexo, o resultado: duplicados no campo meta da galeria ao carregar imagens manualmente. O hook executa uma vez, após a conclusão da importação, pode ser removido com segurança. Se a função estiver ligada aosave_postou usada na atualização em massa, ainda mais razão para a remover. Caso contrário, cada edição de artigo reconstruirá o conteúdo, removendo tags<img>e reescrevendo a galeria.
Como deixar imagens individuais fora da galeria?
Exclua-as da substituição. Na variante com
pmxi_gallery_image, adicione uma condição por tamanho ou texto alternativo. Na variante com pós-importação, em vez depreg_replacepara todos os<img>, use substituição seletiva: deixe imagens com uma classe CSS ou atributo específico, remova as restantes e substitua pela galeria. Por exemplo,<img class="keep">permanece no conteúdo, todos os outros<img>são substituídos por[gallery]. Resolve-se refinando a regex na função de substituição.
É necessário o WP All Import Pro ou a versão gratuita é suficiente?
A versão gratuita pode importar imagens para a biblioteca de media e anexá-las a um artigo. O hook
pmxi_gallery_imagetambém está disponível nela. A versão Pro adiciona: carregamento de imagens a partir de URLs externos, importações Cron agendadas, execução de funções PHP diretamente no modelo de importação e suporte para campos personalizados. Para uma importação única com ficheiros locais, a versão gratuita é mais do que suficiente. O Pro é necessário quando as imagens estão num servidor de terceiros e não quer descarregá-las manualmente, bem como para campos ACF, importação WooCommerce e trabalho com tipos de artigo personalizados.
Qual o método a escolher para a sua tarefa
Se está apenas a planear uma importação, monte a galeria em tempo real via pmxi_gallery_image. Mais rápido, mais limpo e sem carga dupla no servidor. Qualquer uma das três variantes acima funciona: a escolha depende do formato em que o seu tema ou plugin espera a galeria.
Se os artigos já foram carregados e as imagens estão espalhadas pelo conteúdo, use a função para substituir <img> por [gallery] e execute uma atualização em massa. Para pequenos volumes (até 200 artigos), isto levará alguns minutos. Para milhares de artigos, é mais sensato dividir em lotes de 50.
O WP All Import em si é um dos importadores mais flexíveis para WordPress. Mais de 200.000 instalações ativas, a versão gratuita no WordPress.org cobre a maioria das tarefas de migração. E a versão Pro remove as últimas limitações em URLs externos e importações Cron. Experimente.



