Não use o Bloco de Notas para substituir links! Isso quebra widgets e opções do tema. Use WP-CLI ou Better Search Replace.
PT-PT

Como atualizar urls na base de dados WordPress ao mover o domínio?

5.00 /5 - (24 votes )
Última verificação: 1 de março de 2026
Experiência: 5+ anos de experiência
Índice

Mover um site WordPress (por exemplo, de dev.site.com para site.com) parece simples: basta executar um “Localizar e Substituir” na base de dados, certo?

ERRADO.

Se tentar executar uma consulta SQL bruta como: UPDATE wp_options SET option_value = replace(option_value, 'antigo.pt', 'novo.pt')

…vai quebrar o seu site. Especificamente, perderá Widgets, Opções de Tema e a configuração de muitos plugins.


O erro comum: Simples “find & replace”

Muitos programadores (e até alguns fornecedores de alojamento) sugerem usar a função simples SQL REPLACE() para atualizar URLs. Esta abordagem parece lógica, mas é fundamentalmente falhada no ecossistema WordPress.

A Tentação:

-- Isto parece seguro, mas NÃO É
UPDATE wp_options 
SET option_value = REPLACE(option_value, 'https://antigo.pt', 'https://novo.pt');

O Que Acontece:

  • Alguns URLs são atualizados corretamente.
  • Dados serializados tornam-se corrompidos.
  • Widgets desaparecem.
  • Opções do tema reiniciam para o padrão.
  • Configurações de plugins são perdidas.
  • O site fica parcialmente quebrado.

Por Que Falha: O WordPress não armazena todos os dados como texto simples. Muitos dados são armazenados como dados PHP serializados, o que requer tratamento especial.


Entender a serialização: O problema central

O que é serialização?

O WordPress armazena estruturas de dados complexas (arrays, objetos) na base de dados como Strings Serializadas. A serialização converte estruturas PHP numa string que pode ser guardada na base de dados.

Exemplo de Dados Serializados:

// Array PHP Original
array(
    'home' => 'https://antigo.pt',
    'siteurl' => 'https://antigo.pt',
    'admin_email' => 'admin@antigo.pt'
)

// String Serializada (guardada na DB)
a:3:{s:4:"home";s:17:"https://antigo.pt";s:7:"siteurl";s:17:"https://antigo.pt";s:11:"admin_email";s:17:"admin@antigo.pt";}

Decompor a string serializada

Vamos descodificar s:17:"https://antigo.pt":

  • s = string (cadeia de caracteres)
  • 17 = comprimento da string (número de caracteres)
  • "https://antigo.pt" = o valor

A Parte Crítica: O número 17 representa a contagem exata de caracteres da string "https://antigo.pt".

O que acontece com substituição simples?

Original:

s:17:"https://antigo.pt"

Após SQL Replace Simples (antigo.pt -> novo-dominio.pt):

O Problema:

  • O comprimento da string mudou de 17 para 23 caracteres.
  • A serialização ainda diz s:17 (espera 17 caracteres).
  • PHP tenta ler 17 caracteres: "https://novo-domin"
  • Falta o final.
  • Todo o array torna-se inválido.
  • Os dados estão corrompidos.

Resultado: O WordPress não consegue ler as configurações ou widgets, por isso ignora-os ou reinicia-os.


Onde estão os dados serializados?

Locais comuns

1. Tabela wp_options:

  • siteurl e home.
  • Dados de Widgets (sidebars_widgets).
  • Modificações de Tema (theme_mods_*).
  • Opções de plugins.

2. Tabela wp_postmeta:

  • Campos Personalizados (Custom Fields).
  • Dados do ACF.
  • Metadados de anexos.

A solução: Ferramentas conscientes de serialização

Precisa de uma ferramenta que:

  1. Dessencialize os dados (converta string de volta para array PHP).
  2. Substitua o texto dentro da estrutura de dados.
  3. Recalcule as contagens de caracteres.
  4. Ressencialize os dados.
  5. Atualize a base de dados.

Método 1: Wp-CLI (recomendado)

A Forma Profissional: Se tiver acesso SSH, o WP-CLI é a melhor ferramenta.

Uso Básico:

wp search-replace 'https://antigo.pt' 'https://novo.pt' --all-tables

Opções Avançadas:

## DRY run (ver o que mudaria sem executar)
wp search-replace 'https://antigo.pt' 'https://novo.pt' --all-tables --dry-run

Método 2: Plugin better search replace

Para utilizadores sem CLI: Se não tiver acesso SSH, use o plugin Better Search Replace.

Como Usar:

  1. Instale o plugin.
  2. Vá a Ferramentas > Better Search Replace.
  3. Insira o URL antigo e o novo.
  4. Selecione as tabelas.
  5. Importante: Marque “Run as dry run?” primeiro.
  6. Clique em “Run Search/Replace”.

Resumo

Em 2026, é essencial usar as ferramentas certas para migração.

  • Nunca use SQL REPLACE simples.
  • Nunca edite ficheiros SQL com editor de texto.
  • Sempre use WP-CLI ou Better Search Replace.

Isto garante que os seus widgets e configurações complexas sobrevivam à mudança de domínio.

O que é Como atualizar urls na base de dados WordPress ao mover o domínio?
Como atualizar urls na base de dados WordPress ao mover o domínio? é um aspeto essencial da gestão de sites WordPress que ajuda a melhorar o desempenho, a segurança e a experiência do utilizador.
Como funciona o Como atualizar urls na base de dados WordPress ao mover o domínio??
Como atualizar urls na base de dados WordPress ao mover o domínio? envolve a configuração de várias definições e a implementação das melhores práticas para otimizar o seu site WordPress.
Porque é que o Como atualizar urls na base de dados WordPress ao mover o domínio? é importante para o WordPress?
Como atualizar urls na base de dados WordPress ao mover o domínio? é crucial porque tem um impacto direto nos rankings do seu site nos motores de busca, na velocidade de carregamento e no sucesso geral.

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados