Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🪓 Como dividir ficheiros XML grandes ao importar para o WordPress

🪓 Como dividir ficheiros XML grandes ao importar para o WordPress

Exportou o seu site, mas o ficheiro pesa 30 megabytes e não cabe no novo alojamento? A importação padrão do WordPress para silenciosamente a meio e parte do conteúdo simplesmente desaparece. Um cenário familiar para quem está a migrar de um site antigo com centenas de artigos.

A causa são os limites rigorosos do alojamento: upload_max_filesize (normalmente 2-8 MB), post_max_size e um tempo limite de execução do script de 30 segundos. Um ficheiro WXR (WordPress eXtended RSS) com anos de conteúdo ultrapassa facilmente estas barreiras.

Aqui estão quatro métodos funcionais para dividir um XML grande em partes e importar tudo sem perder dados. Do mais simples ao mais avançado.

💡 Resumo rápido:

  • Aumente o limite de upload através do suporte do alojamento: é a via mais rápida se o seu fornecedor colaborar.
  • Precisa de uma ferramenta offline para um sistema operativo específico? Experimente o WXR File Splitter (Windows) ou o WXR Split (Mac).
  • Opção multiplataforma sem instalação: o divisor de WXR online divide o ficheiro diretamente no seu navegador.
  • Trabalha com a linha de comandos? O WP-CLI wp import aceita vários ficheiros e não é limitado pelas restrições web.

Porque é que a importação falha: três limites que atrapalham

A importação do WordPress esbarra não numa, mas em três barreiras em simultâneo.

  • upload_max_filesize: o tamanho máximo de um único ficheiro enviado. Em alojamentos baratos, isto são 2 MB; em alojamentos de gama média, 8-32 MB.
  • post_max_size: o tamanho total do pedido POST. Tem de ser maior do que o upload_max_filesize, caso contrário o ficheiro não chega ao manipulador.
  • max_execution_time: o tempo de execução do script. Se a importação demorar mais de 30-60 segundos, o processo termina mesmo que o ficheiro tenha sido enviado com sucesso.

Uma exportação de um site antigo com 500 artigos e milhares de comentários gera facilmente um XML de 15-25 MB. Um ficheiro assim não cabe nos limites padrão.

Método 1: Peça ao seu alojamento para aumentar os limites

A via mais simples é contactar o suporte do alojamento. A maioria dos fornecedores aumenta o upload_max_filesize para 64-128 MB a pedido, especialmente em planos acima do nível básico.

Se tiver acesso às configurações do servidor, adicione isto ao wp-config.php:

1define('WP_MEMORY_LIMIT', '256M');

E crie um ficheiro .user.ini na raiz do site (para alojamentos que usam PHP-FPM):

1upload_max_filesize = 128M
2post_max_size = 128M
3max_execution_time = 300

Em alojamento partilhado, o .user.ini nem sempre funciona; nesse caso, terá de abrir um ticket de suporte.

Depois de alterar os limites, envie o ficheiro WXR original através de Ferramentas → Importar → WordPress. Se o ficheiro continuar a não passar, avance para a divisão.

Método 2: WXR File Splitter para Windows

Para Windows, existe um utilitário de desktop clássico chamado WXR File Splitter. A interface é minimalista, mas cumpre o objetivo: abra o ficheiro WXR, especifique o número de partes ou o tamanho máximo de cada uma, clique em «Split Files» e obtém vários ficheiros XML na mesma pasta.

Janela do WXR File Splitter a mostrar dados de ficheiro XML

O utilitário mostra o número de elementos no ficheiro antes da divisão: artigos, páginas, comentários. Isto ajuda a estimar quantas partes criar.

Nota: a ferramenta é antiga e o site do programador original já não funciona. Se o utilitário não correr no Windows 10/11, salte diretamente para o método 4 (divisor online); é mais fiável.

Método 3: WXR Split para Mac

Os utilizadores de Mac têm um equivalente chamado WXR Split. A lógica é a mesma: carregue o XML, defina o tamanho das partes, obtenha um conjunto de ficheiros para importação sequencial.

Interface do WXR Split com seleção do tamanho do ficheiro de saída

Tal como na versão Windows, o site oficial desta ferramenta pode estar indisponível. Não perca tempo a procurar; o divisor web do próximo passo funciona em qualquer sistema operativo.

Método 4: Divisor online wxrfilesplitter.com

A opção mais prática atualmente é a ferramenta web gratuita WXR File Splitter. Funciona no navegador, não requer instalação e não está vinculada a nenhum sistema operativo.

Como dividir o ficheiro:

  • Abra wxrfilesplitter.com.
  • Envie o seu ficheiro WXR. O limite de tamanho é de 256 MB, o que é mais do que suficiente para qualquer site.
  • Especifique o tamanho desejado para as partes; o programador recomenda 2 MB para uma importação estável.
  • Clique em Submit e descarregue o arquivo com os ficheiros XML divididos.

A ferramenta não armazena ficheiros no servidor; os dados temporários são limpos a cada hora. Após a divisão, importe cada ficheiro através do caminho padrão Ferramentas → Importar → WordPress, um de cada vez.

A principal vantagem: não precisa de encontrar um utilitário para o seu sistema operativo nem de perceber de linha de comandos. Tudo acontece no navegador com alguns cliques.

Método 5: Importação por WP-CLI (para quem trabalha com a consola)

Se tiver acesso SSH ao servidor e o WP-CLI estiver instalado, pode importar sem qualquer divisão, ou com divisão para maior rapidez.

O WP-CLI aceita vários ficheiros de uma vez:

1wp import file1.xml file2.xml file3.xml --authors=create

O parâmetro --authors=create cria contas de autor se estas não existirem no novo site.

Este método tem duas vantagens: primeiro, o WP-CLI funciona através da linha de comandos e não está limitado pelas restrições PHP da web; segundo, pode passar um diretório de partes divididas com um único comando.

Para ativar um registo detalhado durante a importação, adicione isto ao wp-config.php:

1define('IMPORT_DEBUG', true);

Depois, o WP-CLI produzirá um relatório detalhado para cada elemento processado, mostrando o que foi importado e o que foi ignorado.

⁉️🤔 Perguntas frequentes

O ficheiro tem 40 MB e nenhum dos métodos ajuda. O que devo fazer?

O problema provavelmente não é o tamanho, mas o tempo limite. Mesmo um ficheiro dividido em partes de 2 MB pode bloquear se o servidor não conseguir processar cada parte em 30 segundos. Peça ao seu alojamento para aumentar o max_execution_time para 300. Ou use o WP-CLI, que não depende dos tempos limite da web.

Posso simplesmente dividir o XML num editor de texto?

Tecnicamente sim, mas na prática não. Um ficheiro WXR tem uma estrutura complexa com namespaces e tags <item> repetidas, cada uma contendo um artigo completo com metadados. O corte manual irá quase de certeza quebrar o XML, e o importador do WordPress dará um erro de parsing. Use ferramentas especializadas.

Preciso de dividir o ficheiro se estiver a mudar para um VPS a sério?

Num VPS, controla os limites; aumente o upload_max_filesize e o post_max_size para 128 MB e o ficheiro será enviado por inteiro. Mas tenha cuidado com os tempos limite: mesmo num servidor potente, importar 500 artigos com ficheiros de media pode demorar 2-3 minutos. Aumente o max_execution_time ou, por precaução, divida o ficheiro na mesma.

E se parte do conteúdo não foi importado após a divisão?

Verifique se importou TODOS os ficheiros resultantes. Um erro comum: descarregou o arquivo do wxrfilesplitter.com, enviou o primeiro ficheiro e parou. Cada ficheiro contém a sua própria porção de elementos; saltar qualquer parte significa perder esses registos. Importe sequencialmente, aguardando que cada um termine.

E quanto a plugins de importação como o WP All Import?

O WP All Import consegue ler ficheiros XML grandes e importá-los em partes, mas foi concebido para importar dados para tipos de publicação personalizados e campos ACF, NÃO para importar WXR padrão com artigos/páginas/comentários tal como estão. Para a tarefa de «mover um site inteiro», use as ferramentas descritas acima.

Resumo: que ferramenta usar para a sua tarefa

Não existe uma ferramenta universal; a escolha depende do acesso ao servidor que tem e do tamanho do ficheiro.

  • Se puder contactar o suporte do alojamento, comece por aumentar os limites. Demora 5 minutos e muitas vezes resolve o problema sem qualquer divisão.
  • Ficheiro até 256 MB sem acesso à consola: o divisor WXR web tratará da tarefa no seu navegador com alguns cliques.
  • Tem SSH e WP-CLI? O wp import com um diretório de ficheiros divididos é o método mais fiável e rápido.
  • Guarde os antigos utilitários de desktop (WXR File Splitter / WXR Split) como opção de recurso; funcionam em sistemas mais antigos, mas os sites dos programadores já não estão disponíveis.

Dividiu o seu XML e importou o site com sucesso? Partilhe nos comentários qual o método que funcionou para si e se encontrou alguma perda de conteúdo durante a importação.