Há algumas semanas atrás completei 3 anos na Automattic (empresa por trás do WordPress.com e muitas outras) e ainda vivo a primeira frase de nosso credo:

Eu nunca pararei de aprender.

Hoje aprendi algo interessante relacionado ao WP-CLI que, assim como fez comigo, pode te ajudar a importar uma quantidade grande de arquivos XML para o WordPress de forma automatizada.

Desde Novembro de 2015 trabalho como Happiness Engineer oferecendo suporte a usuários do WordPress.com mas, desde o começo de 2018, dedico algumas horas do dia para um outro tipo de suporte. Algo como um suporte do suporte.

O problema

Durante uma dessas sessões trabalhando como suporte do suporte, precisei migrar cerca de 320.000 posts (sim, 320 MIL POSTS) de um site para outro e, infelizmente, não é algo tão simples de ser feito apenas exportando as tabelas do banco de dados devido aos relacionamentos entre posts criados em tabelas diversas.

Felizmente, temos uma ferramenta no WordPress para exportar e importar conteúdos em arquivos XML mas preferi não me atrever a tentar importar 6Gb de XML de uma só vez e então os dividi em diversos arquivos. 300 arquivos com cerca de 20Mb cada um.

Criar centenas de arquivos gerou um outro problema

O importador nativo do WordPress só consegue interpretar um único arquivo XML por vez.

Solução encontrada

Comecei a pesquisar por maneiras de solucionar esse problema de uma forma mais eficiente ao invés de importar cada arquivo manualmente em Ferramentas > Importar, já que isso poderia demorar dias dependendo da velocidade de upload e de outros fatores. Então decidi partir para o WP-CLI.

Eu já havia usado o comando import do WP-CLI algumas vezes para importar arquivos únicos mas fiquei muito feliz depois de ler a descrição da opção <file> em sua documentação:

<file>…
Path to one or more valid WXR files for importing. Directories are also accepted.

Sim, a parte destacada significa que a opção <arquivo> também pode ser usada para importar diversos arquivos dentro de um mesmo diretório. Você só precisa informar o caminho do diretório ao invés do caminho de um arquivo!

Como usar

  1. Você precisará ter o WP-CLI instalado em seu ambiente (localhost ou servidor).
  2. Crie uma pasta com todos os arquivos XML que você deseja importar.
  3. Rode o comando wp import /caminho-para-a-pasta-com-os-arquivos/ --authors=skip --skip=attachment.

Vale lembrar que os comandos --authors=skip e --skip=attachment são opcionais e você pode retirá-los de acordo com a necessidade de sua importação.

A relação completa das opções suportadas pelo comando wp import estão na documentação do WP-CLI

Quer saber como instalar o WP-CLI? O pessoal da Haste Design publicou um tutorial bem bacana ensinando isso há uns meses atrás.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.