Este post faz parte de um conjunto de artigos organizados em um Curso de WordPress. Acesse o link para outros conteúdos.

Esta é uma das dúvidas mais comuns para quem está começando no WordPress. Se você deseja migrar seu site com o auxílio de um plugin, o que normalmente se usa é o Duplicator: ele gera um pacote na origem e te ajuda a instalar no destino. Se prefere fazer algo mais controlado é só seguir o tutorial abaixo.

Como mover o site em wordpress do localhost (ou homologação, desenvolvimento, da sua máquina) para a produção sem plugins?

Normalmente a migração de sites em WordPress – de sites em geral, diga-se de passagem – é divida em duas partes: arquivos e banco de dados.

Como migrar os arquivos

Geralmente basta baixar por FTP os arquivos de um ambiente e subir no outro. Alguns plugins guardam em texto configurações de endereço, então faça uma busca por todos os arquivos, tanto pelo caminho real (dentro dos diretórios do servidor) quanto pela  url e, se for o caso, faça as devidas trocas.
Algumas boas dicas aqui são: já alterar o wp-config.php e o .htaccess antes de subir os arquivos, assim você não precisa mexer nisso novamente depois, e colocar logo a pasta Search-Replace-DB-master na raíz do WordPress (mesmo lugar onde normalmente estão a wp-admin, wp-include, wp-content), que falaremos a seguir. Depois de subir os arquivos não se esqueça de alterar o permissionamento da pasta wp-content/uploads.

Como migrar o banco de dados do WordPress

De longe a parte mais complicada. Muitos componentes do WordPress guardam em BD o caminho do ambiente atual (textos de posts e widgets, configurações de plugins e etc.) e é preciso uma forma de trocar todos ao mesmo tempo para que não haja nenhum link quebrado perdido pelo site.

O que NÃO resolve

Fazer um dump do banco e fazer um search/replace no texto do sql. Isso dá errado porque o WordPress guarda muita coisa de modo serializado, então se a quantidade de caracteres de uma url for diferente da outra os dados estão corrompidos e vai ocorrer uma pane geral no site.

O que QUASE resolve

A estratégia mais comum, razoavelmente eficaz mas muito pouco eficiente, é migrar o banco de dados sem mexer em nada, alterar pelo phpmyadmin só os valores de home e siteurl na tabela wp_options e fazer um replace por sql no texto dos posts. Depois fazer uma busca geral no site para ver o que não está funcionando e resolver (com certeza a pior parte do processo). No fim das contas o desenvolvedor percebe que deixou vários detalhes pra trás e tem que ficar lidando com constantes solicitações de pequenas mudanças.

O que RESOLVE

O que nós precisamos é de um search and replace geral no banco que mantenha a integridade dos dados serializados. Comecei a escrever um script que fizesse isso, mas acabei encontrando um pronto, o Search Replace DB. Ele também funciona para sites que não sejam em wordpress, mas para esses casos existe uma facilidade especial: o script já preenche os dados de acesso ao banco de dados, basta colocar a pasta na mesma que o wp-config.php. Depois você seleciona em quais tabelas deseja fazer a troca – todas, por que não? – e está pronto.

Importante: depois de usar não se esqueça de apagar a pasta e seus arquivos do ambiente de produção. Se ele for descoberto pela pessoa errada pode causar um transtorno inacreditável.

Importante 2: se você preferir não usar o script na mesma pasta que o wp-config.php e perceber que as coisas não estão indo como deveriam, talvez você precise rever o campo charset, preenchendo com o valor utf8.

Segue então um pequeno resumo para servir de guia nas migrações.

Checklist para migração de site em WordPress

  1. Baixar por FTP os arquivos do ambiente atual
  2. Pesquisar nestes arquivos referências para o site atual, tanto urls quanto caminhos reais
  3. Fazer um dump da (exportar a) base de dados
  4. Se ainda não existir, criar no ambiente destino a base de dados do site
  5. Alterar o wp-config.php (a versão que está na sua máquina, claro) com os dados de conexão do banco de dados do ambiente destino
  6. Alterar o .htaccess para o endereço do novo ambiente
  7. Copiar uma versão do searchreplacedb para o mesmo diretório do wp-config.php
  8. Subir com os arquivos para o ambiente destino
  9. Alterar o permissionamento da pasta wp-content/uploads
  10. Importar na base criada o dump da base original
  11. Acessar o Search-Replace-DB-master e realizar as trocas de endereço
  12. Apagar o Search-Replace-DB-master do ambiente de produção
  13. Acesse o painel do WordPress, vá em configurações, Links permanentes e, sem alterar nada, salve.

Agora que você já sabe como migrar seu site em WordPress, que tal saber um pouco mais sobre widgets?