Como corrigir o conflito de GUID após migração no WordPress
O que é o conflito de GUID após migração?
Conflito de GUID após migração é o problema causado por alterar a coluna guid da tabela de posts ao trocar de domínio. O GUID é um identificador único e permanente de cada post, gerado uma vez na publicação e nunca pensado para mudar, mesmo que pareça uma URL. Quando uma busca e substituição troca o domínio também no GUID, leitores de feed RSS, que usam o GUID para saber se já mostraram um item, passam a ver todos os posts como novos e os reentregam duplicados aos assinantes.
Como identificar
- Assinantes do feed RSS e do e-mail recebem todos os posts antigos de novo, como se fossem publicações novas, após a migração.
- Agregadores e leitores de feed listam cada post duplicado, um com o GUID antigo e outro com o novo domínio.
- Na tabela wp_posts, a coluna guid mostra o domínio novo em vez do domínio original em que o post foi publicado.
- Plugins que usam o GUID como referência (alguns de mídia ou importação) apontam para caminhos que retornam 404.
Como prevenir
- Sempre rode o search-replace com a flag que pula a coluna guid ao trocar de domínio
- Trate o GUID como identificador permanente: ele pode continuar com o domínio antigo sem prejuízo ao site
- Faça backup do banco antes de qualquer migração e confira o feed RSS num leitor logo após a troca de domínio
Causa
- Uma busca e substituição ampla trocou o domínio em todas as colunas, incluindo a coluna guid de wp_posts, que jamais deveria mudar.
- Um UPDATE de SQL cru rodou um REPLACE no campo guid junto com os demais campos, sem excluir essa coluna da operação.
- Um plugin de migração ou de busca e substituição não ofereceu a opção de pular o GUID e o alterou por padrão.
- A migração importou um dump em que o GUID já havia sido editado manualmente no arquivo .sql antes da importação.
- Após a troca de domínio, alguém rodou de novo o search-replace sem a flag que protege o guid, reescrevendo o identificador.
Como resolver
- Faça backup do banco antes de tudo: exporte um dump completo do banco de dados. Qualquer ajuste na coluna guid é delicado e precisa de ponto de retorno antes de qualquer alteração.
- Entenda que o GUID não é URL de verdade: o GUID parece um link, mas serve só como identificador único e permanente do post. Ele não controla onde o conteúdo é exibido. Por isso, mantê-lo com o domínio antigo não quebra nada no site visível.
- Corrija as URLs reais, não o GUID: refaça a troca de domínio com WP-CLI search-replace usando a flag que pula a coluna guid. Isso ajusta os links do conteúdo (post_content, opções) sem tocar no identificador dos posts.
wp search-replace 'https://domínio-antigo.com' 'https://domínio-novo.com' --skip-columns=guid - Restaure o GUID se ele já foi trocado: se o GUID já foi alterado para o domínio novo e o feed duplicou tudo, restaure o backup anterior ou reverta apenas a coluna guid ao domínio original com cuidado, conforme o código abaixo.
- Confirme nos leitores de feed: depois de restaurar o GUID original, abra o feed em seudominio.com/feed e cheque em um leitor que os posts antigos não voltem a ser marcados como novos. A partir daí, não toque mais na coluna guid.
-- CUIDADO: rode somente com backup do banco e o domINIO antigo EXATO.
-- Reverte a coluna guid ao dominio original, apenas se ela foi trocada por engano.
-- Confira o prefixo de tabela (wp_) e o protocolo (http/https) reais do site antigo.
-- 1. Primeiro, veja o que sera alterado (somente leitura):
SELECT ID, guid FROM wp_posts
WHERE guid LIKE 'https://dominio-novo.com%';
-- 2. Se os resultados estiverem corretos, reverta o GUID ao dominio original:
UPDATE wp_posts
SET guid = REPLACE(guid, 'https://dominio-novo.com', 'https://dominio-antigo.com')
WHERE guid LIKE 'https://dominio-novo.com%';














