WordPress

Executar uma Busca e Substituição no Banco de Dados do WordPress

WordPress stores absolute URLs in dozens of database tables, so a domain change or an SSL move leaves old addresses scattered through posts, options and plugin settings: a search and replace is how…

Executar uma Busca e Substituição na Sua Base de Dados WordPress

WordPress armazena URLs absolutas em dezenas de tabelas de banco de dados, portanto uma mudança de domínio ou uma migração SSL deixa endereços antigos espalhados por posts, opções e configurações de plugins: uma busca e substituição é como você limpa tudo isso com segurança. Este guia aborda as duas formas suportadas de fazer isso no KPanel, por que um método comum de terceiros corrói dados, e como verificar o resultado.

Quando Você Precisa de Uma

  • Mudar de http:// para https:// depois de habilitar SSL.
  • Alterar domínio, por exemplo old-brand.co.nz para new-brand.co.nz.
  • Depois de colocar staging em produção, quando o nome do host de staging ainda está embutido no banco de dados.
  • Desativar um host de asset antigo e redirecionar cada URL de imagem de uma vez.
  • Corrigir um erro em massa em muitos posts, como um número de telefone antigo ou um nome de produto descontinuado.

Uma busca e substituição reescreve linhas em cada tabela de uma vez e não há desfazer por linha. Faça um backup antes de começar, sempre, mesmo para uma mudança que pareça trivial. KPanel cria um automaticamente quando você usa as ferramentas incorporadas descritas abaixo, mas se você estiver executando o comando você mesmo, você é responsável por ele. Veja Fazendo um Backup.

Por Que Você Não Pode Apenas Executar um SQL REPLACE

Este é o erro único mais danoso no trabalho com banco de dados WordPress, portanto vale a pena entender antes de escolher um método.

WordPress armazena configurações de plugin, opções de tema e dados de widget como strings PHP serializadas. Uma string serializada registra o comprimento de cada valor dentro dela, assim:

a:1:{s:3:"url";s:26:"http://old-domain.co.nz/x";}

Esse s:26 diz que a URL tem 26 caracteres de comprimento. Substitua http:// por https:// usando um SQL REPLACE() simples e o texto fica com 27 caracteres enquanto o comprimento armazenado ainda afirma 26. O PHP então se recusa a desserializar toda a opção, e a configuração silenciosamente reverte para vazia. As configurações do customizador de tema desaparecem, os sliders perdem seus slides, as licenças de plugin se desregistram.

A busca-substituição WP-CLI que KPanel executa desserializa cada valor, substitui dentro dele, e reserializa com comprimentos corrigidos. É por isso que é o único método documentado aqui.

Nunca execute UPDATE wp_options SET option_value = REPLACE(...) ou o equivalente no phpMyAdmin contra um banco de dados WordPress. Parece que funcionou, relata linhas afetadas, e silenciosamente destrói cada configuração serializada que tocou. Não há reparo a curto prazo além de restaurar um backup.

Método 1: O Cartão Busca e Substituição

Esta é a escolha certa para quase everyone. Está disponível em cada plano WordPress.

  1. Faça login no KPanel e clique em Websites na barra lateral esquerda.
  2. Clique no site.
  3. Abra a aba WordPress, depois a seção Quick Actions.
  4. Encontre o cartão Search & Replace e clique em Configure.
  5. Digite o texto existente em Find (old value).
  6. Digite o novo texto em Replace with.
  7. Deixe Dry run (preview only, no changes) marcado e clique em Preview.

Cartão Search and Replace no Quick Actions do KPanel

O dry run relata quantas substituições seriam feitas e divide a contagem por tabela e coluna, para que você possa ver exatamente onde a mudança chegaria antes de se comprometer com ela.

Quando o preview parece correto:

  1. Desmarque Dry run.
  2. Clique em Run.
  3. Confirme o diálogo.

Um backup completo é feito automaticamente antes da substituição começar, e a execução abrange todas as tabelas, incluindo aquelas criadas por plugins.

Busque pela string mais específica que puder. Substituir old-domain.co.nz também reescreve mail.old-domain.co.nz e staging.old-domain.co.nz, o que raramente é o que você quer. Incluindo o scheme, como em https://old-domain.co.nz, mantém a correspondência apertada.

Método 2: WP-CLI Do Console

O console oferece o mesmo mecanismo com mais controle sobre flags. É uma das seções que aparecem nos planos gerenciados; em outros planos, a faixa de abas mostra um link +8 on Managed em seu lugar.

Abra o site, depois WordPress, depois Console. O prompt já começa com wp, portanto digite apenas o resto do comando.

Visualize primeiro:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables --dry-run

Depois execute-o de verdade:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables

O console não faz um backup para você. O backup pré-execução automático ocorre apenas quando você usa o cartão Search & Replace no Método 1. Se você executar o comando aqui, faça um backup você mesmo primeiro na aba Backups do site.

Flags úteis:

FlagO que faz
--all-tablesInclui tabelas customizadas criadas por plugins, não apenas as principais do WordPress
--dry-runRelata o que mudaria e não escreve nada
--preciseUsa PHP em vez de SQL para a substituição. Mais lento, mas lida com estruturas serializadas difíceis
--skip-columns=guidDeixa a coluna GUID do post intocada (veja abaixo)
--report-changed-onlyReduz a saída para tabelas que realmente mudaram

Uma Nota sobre GUIDs

Todo post WordPress tem uma coluna guid. Apesar de parecer uma URL, é um identificador, não um link, e os leitores de feed a usam para dizer se já viram um item. Reescrevê-la pode fazer cada post no seu feed reaparecer como novo.

Reescreva GUIDs quando você está mudando domínio permanentemente e começando do zero. Pule-as com --skip-columns=guid quando você está apenas movendo de HTTP para HTTPS no mesmo domínio.

Mudar Domínio: Use o Cartão Change Site URL Em Seu Lugar

Se o ponto inteiro é mover o site para um novo domínio, não comece com busca e substituição. O cartão Change Site URL, na mesma seção Quick Actions, atualiza as opções siteurl e home e executa a substituição em todas as tabelas em uma operação, na ordem correta. Fazer ao contrário pode deixar o WordPress incapaz de carregar seu próprio admin.

Depois da Substituição

Trabalhe através desta lista antes de chamá-lo de pronto.

  1. Flush the cache. Na seção Quick Actions, execute Flush Cache. Se o site usa o full page cache, limpe-o de WordPress, depois Caching.
  2. Flush the rewrite rules. Execute Flush Rewrites na mesma seção, ou abra Settings, depois Permalinks no wp-admin e clique em Save Changes sem alterar nada.
  3. Purge the CDN se o site está nele, de Performance, depois Kapsule CDN. Veja Purging the CDN Cache.
  4. Load the site in a private window para que o cache do seu navegador não possa enganá-lo.
  5. Check the padlock. Um cadeado ausente ou com aviso depois de um movimento SSL significa que URLs foram deixadas para trás: Fixing Mixed Content Warnings.
  6. Click through the fiddly pages. Sliders da home page, o logo do header, qualquer página construída com um page builder, e o checkout em uma loja. Estes mantêm as URLs que vivem em opções serializadas.
  7. Clear any caching plugin da sua própria tela de configurações.

Solução de Problemas

O dry run relata zero substituições. A string não está no banco de dados nessa forma exata. Verifique uma barra final, um prefixo www., ou o scheme. Tente buscar apenas o nome do host nú primeiro para confirmar que está lá em tudo.

As imagens estão quebradas depois de uma mudança de domínio. As URLs de mídia vivem em wp_posts e wp_postmeta e são captadas por --all-tables, mas um CDN ou plugin de otimização de imagem pode cachear suas próprias cópias reescritas. Limpe o CDN e o cache do plugin, depois recarregue.

As configurações desapareceram depois da substituição. Esse é o problema de serialização, e significa que a mudança foi feita com SQL bruto em vez de através das ferramentas aqui. Restaure o backup feito antes da execução: Restoring From a Backup.

URLs de staging continuam voltando. Algo está repopulando-as, geralmente um push agendado ou uma opção em cache. Verifique o workflow em Using Staging: Pushing and Pulling e certifique-se de que Rewrite URLs está marcado quando você faz push.

Ainda precisa de ajuda?

Envie-nos um email para support@kapsulehost.com ou abra um chat no KPanel.

Abrir KPanel
WordPress Search and Replace | Kapsule Help