# Como corrigir site quebrado após migração do WordPress

O site quebrado após migração do WordPress aparece com layout sem CSS, imagens faltando, links apontando para o domínio antigo ou tela branca. A causa quase sempre é a URL antiga ainda gravada no banco de dados ou credenciais erradas no wp-config.php do novo servidor.

## O que é o site quebrado após migração do WordPress?

Um site quebrado após migração é o estado em que o WordPress foi movido para outro servidor ou domínio, mas não funciona corretamente no destino: o CSS não carrega (página "crua"), imagens e links apontam para o endereço antigo, ou o site nem abre. Isso ocorre porque a migração copia arquivos e banco, mas o banco ainda guarda referências (URLs, caminhos) do ambiente de origem.

## Como identificar

- O site abre sem estilo, como texto puro ("o CSS sumiu").
- Imagens e links apontam para o domínio ou caminho antigo e retornam 404.
- Tela branca (white screen) ou "Error establishing a database connection" ao abrir.
- O wp-admin redireciona para a URL antiga e não permite login.

**Antes de começar:** Faça backup completo do banco de dados antes do search-replace: a operação altera milhares de linhas e é irreversível sem cópia. Remova as linhas WP_HOME/WP_SITEURL do wp-config.php depois que a URL definitiva estiver gravada no banco.

## Como prevenir

- Use um plugin de migração confiável que já faz o search-replace da URL ao importar
- Faça backup completo de arquivos e banco antes de iniciar qualquer migração
- Teste o site em staging com o domínio final antes de apontar o DNS para o novo host

Erros relacionados

- [Como corrigir URLs quebradas após mudanca de domínio](https://full.services/wp-fixer/corrigir-urls-quebradas-mudanca-dominio-wordpress/)
- [Como corrigir mídia que não aparece após migração](https://full.services/wp-fixer/corrigir-midia-nao-aparece-pos-migracao-wordpress/)
- [Como corrigir erro de serialização após migração](https://full.services/wp-fixer/corrigir-serializacao-pos-migracao-wordpress/)

## Causa

- URL antiga (siteurl/home e referências no conteúdo) ainda gravada no banco de dados após a cópia.
- Credenciais de banco erradas no wp-config.php do novo servidor (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST).
- Caminho absoluto de arquivos diferente no novo host (uploads e includes apontando para a pasta antiga).
- .htaccess ou regras de servidor da origem incompatíveis com o novo ambiente (Apache vs Nginx).
- Permissões de arquivos e pastas incorretas após a transferência (FTP sem preservar 644/755).

## Como resolver

1. Confirme o wp-config.php do novo host: compare DB_NAME, DB_USER, DB_PASSWORD e DB_HOST com os dados do painel do novo servidor. Banco copiado mas credenciais antigas geram tela branca ou erro de conexão.
2. Defina a URL temporariamente no wp-config: se o admin redireciona para o domínio antigo, force a URL nova com WP_HOME e WP_SITEURL no wp-config.php para conseguir entrar e ajustar.
3. Faça o search-replace da URL no banco: substitua a URL antiga pela nova em todo o banco, de forma a preservar dados serializados. Use o WP-CLI (search-replace) ou a ferramenta Better Search Replace; nunca um find-and-replace cru.
4. Regenere o .htaccess e os permalinks: em Configurações > Links permanentes, clique em Salvar para reescrever o .htaccess no padrão do novo servidor.
5. Corrija permissões e limpe cache: aplique 644 para arquivos e 755 para pastas via FTP e limpe qualquer cache (plugin/CDN) para o site renderizar com os caminhos novos.

## Código

```bash
# WP-CLI: substitui a URL antiga pela nova em TODO o banco, preservando dados serializados
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --report-changes-only

# Teste primeiro com --dry-run (nao grava nada, so mostra o que mudaria):
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --dry-run
```

## Perguntas frequentes

### Por que o CSS some depois de migrar?

Porque o banco ainda guarda a URL antiga em siteurl/home. O WordPress tenta carregar o CSS do domínio anterior, que não responde no novo ambiente. Um search-replace da URL no banco restaura os caminhos e o estilo volta.

### Posso trocar a URL com um UPDATE de SQL simples?

Não. Muitos dados no WordPress são serializados (widgets, opções de tema, plugins). Um UPDATE cru quebra o tamanho declarado das strings e corrompe esses dados. Use WP-CLI search-replace ou Better Search Replace, que tratam a serialização.

### O site abre em tela branca após migrar. O que checar primeiro?

Comece pelo wp-config.php: confirme as credenciais de banco do novo host (DB_HOST costuma mudar) e ative o WP_DEBUG para ver o erro real. Tela branca geralmente é erro de conexão ou fatal error de plugin/tema.

### Migrei e o wp-admin redireciona para o domínio antigo. Como entro?

Force a URL nova adicionando define('WP_HOME','https://novo.com') e define('WP_SITEURL','https://novo.com') ao wp-config.php. Isso permite acessar o painel; depois faça o search-replace no banco e remova as linhas.

### Preciso de SSH para corrigir?

Não obrigatoriamente. O WP-CLI (via SSH) é o caminho mais seguro, mas o plugin Better Search Replace faz a mesma troca de URL pelo painel, também preservando dados serializados. Faça backup do banco antes em ambos.

### As imagens não aparecem mesmo após o search-replace. Por quê?

Verifique se a pasta wp-content/uploads foi transferida por completo e com as permissões certas (755 nas pastas). Caminhos absolutos antigos ou uploads faltando geram 404 nas imagens mesmo com a URL já corrigida.

**Fonte:** [WordPress.org — Moving WordPress](https://wordpress.org/documentation/article/moving-wordpress/)
