A tela Há um erro crítico no seu site é o aviso; o diagnóstico já foi escrito pelo WordPress no e-mail do modo de restauração e no debug.log. O e-mail só sai se o erro vier de plugin ou tema, acontecer no painel ou login, não houver envio nas últimas 24 horas e o site enviar e-mail. A linha do log diz o culpado pelo caminho do arquivo: a pasta depois de wp-content/plugins. Desative só ele.
- A frase curta no front-end significa que aquela requisição não disparou o e-mail; abra o wp-admin para forçar a tentativa.
- O e-mail de recuperação respeita um limite padrão de um envio por dia e vai para o e-mail de administração ou para RECOVERY_MODE_EMAIL.
- O modo de restauração pausa o culpado só para a sua sessão; o visitante continua vendo o erro.
- Warnings, notices e deprecated não derrubam o site: procure a linha PHP Fatal error ou PHP Parse error.
- Erro em mu-plugins não é detectado pelo modo de restauração e não gera e-mail.
- Desative só o culpado com –skip-plugins e –skip-themes, sem derrubar todos os plugins.
A tela branca com uma frase não é o erro — é o aviso de que existe um
“Há um erro crítico no seu site.” É isso que o visitante vê, com um link para a documentação do WordPress e mais nada. A resposta HTTP é um 500. Quase todo guia responde a essa tela com a mesma lista: desative todos os plugins, troque o tema, aumente a memória, restaure o backup. Funciona às vezes — no escuro, por eliminação, derrubando o que estava funcionando junto.
O WordPress, desde a versão 5.2, sabe exatamente qual arquivo quebrou. Ele registra o tipo do erro, o arquivo, a linha e a mensagem, e em certos casos manda tudo isso por e-mail. O trabalho não é adivinhar o culpado: é ler o que o WordPress já escreveu. Este guia mostra onde essa informação está, por que o e-mail às vezes não chega, e como transformar uma linha de log em um nome de plugin.
A frase exata já diz em que situação você está
O manipulador de erro fatal do WordPress escolhe entre três mensagens, e cada uma revela algo diferente. Os textos abaixo são os da tradução oficial em português do Brasil:
| Mensagem na tela | Onde aparece | O que significa |
|---|---|---|
| Há um erro crítico no seu site. | Front-end, para qualquer visitante | O erro foi capturado, mas essa requisição não dispara o e-mail de recuperação |
| Ocorreu um erro crítico neste site. Verifique a caixa de entrada do e-mail do administrador do site para obter instruções. | Painel ou tela de login | O WordPress tentou mandar o e-mail com o link do modo de restauração |
| Há um erro crítico no seu site, colocando-o em modo de restauração. | Painel, com você já dentro do modo de restauração | O plugin ou tema culpado foi pausado para a sua sessão |
A primeira linha é a mais comum e a que mais engana: se você só olhou o site pelo front-end, o e-mail pode nunca ter sido disparado. A próxima seção explica por quê.
Por que o e-mail de recuperação às vezes não chega
Lendo o código do modo de recuperação do WordPress, o e-mail só sai quando quatro condições se cumprem ao mesmo tempo:
- O erro está num plugin ou num tema. O WordPress identifica o culpado pelo caminho do arquivo: se está dentro de
wp-content/plugins/, o culpado é a primeira pasta depois deplugins/; se está numa pasta de temas, é o tema. Erro emmu-plugins, no núcleo ou nowp-config.phpnão gera e-mail. - O erro aconteceu num endpoint protegido. São três: a tela de login (
wp-login.php), o painel (wp-admin, fora de requisições AJAX comuns) e algumas ações AJAX que ajudam a resolver o problema. Erro que só acontece no front-end mostra a tela, mas não manda e-mail. - Não houve outro e-mail nas últimas 24 horas. O limite padrão é de um dia, definido pelo filtro
recovery_mode_email_rate_limit. Se o erro já aconteceu ontem, o e-mail de hoje não vem. - O próprio envio de e-mail do site funciona. O aviso sai pelo
wp_mail, o mesmo caminho de qualquer e-mail do WordPress. Site que não envia e-mail também não envia este.
O destinatário é o e-mail de administração em Configurações → Geral. Se essa caixa é de alguém que saiu da agência, o aviso vai para lá. A constante RECOVERY_MODE_EMAIL no wp-config.php muda o destino sem mexer no e-mail de administração:
define( 'RECOVERY_MODE_EMAIL', 'suporte@seudominio.com.br' );Truque prático: se o site quebrou no front-end e o e-mail não veio, abra /wp-login.php ou /wp-admin/. Se o erro também acontece ali, você está num endpoint protegido e o WordPress tenta mandar o e-mail nesse momento — é quando aparece a segunda mensagem da tabela. Se o site não envia e-mail nenhum, conserte isso depois: o nosso guia de SMTP com teste de envio mostra o caminho, e é ele que garante que o próximo aviso chegue.
Lendo o e-mail linha por linha
O assunto chega como [Nome do site] O seu site está experimentando um problema técnico. O corpo tem quatro partes úteis, e só uma delas costuma ser lida.
1. A causa. Uma frase como “Neste caso, o WordPress detectou um erro com o seu plugin: Nome do Plugin.” ou “…com o seu tema: Nome do Tema.” Esse é o culpado segundo o caminho do arquivo onde o erro explodiu — quase sempre certo, com uma exceção que aparece logo depois da tabela.
2. O link do modo de restauração. Aponta para wp-login.php?action=enter_recovery_mode com um token. O e-mail diz que ele expira em um prazo — por padrão, o mesmo um dia do limite de envio. Se expirar e o erro se repetir depois disso, chega um link novo.
3. As informações de ambiente. Linhas como WordPress versão, Tema atual, Plugin atual (com a versão) e PHP versão. É a parte que mais ajuda e menos gente lê: um erro que surgiu logo depois de a hospedagem trocar a versão do PHP aparece aqui.
4. Os detalhes do erro. Uma frase no formato “Um erro do tipo E_ERROR foi causado na linha 123 do arquivo /home/…/wp-content/plugins/nome-do-plugin/arquivo.php. Mensagem de erro: …”. É a mesma informação do log, e se lê com a tabela abaixo.
O que o modo de restauração faz (e o que ele não faz)
Pelo link, você entra no painel com o plugin ou tema culpado pausado. A nota técnica do WordPress 5.2 é explícita: a pausa vale só para quem está no modo de restauração, e para os outros usuários o site continua quebrado até o problema ser corrigido. Ou seja:
- O modo de restauração não conserta o site para os visitantes. Ele te dá um painel funcionando para consertar.
- Dentro dele, a tela de Plugins mostra o culpado com o erro. Desative, faça rollback ou atualize — e só então clique em Sair do modo de restauração.
- Se você sair sem desativar nada, o visitante continua vendo a mesma tela.
Sem e-mail? O mesmo dado está no debug.log
Quando o e-mail não vem, o log é a fonte. Ligue no wp-config.php, acima da linha que diz para parar de editar:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // grava em wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // não mostra o erro ao visitante
@ini_set( 'display_errors', 0 );A documentação oficial de depuração explica as três constantes; o código do núcleo confirma que WP_DEBUG_LOG como true grava em wp-content/debug.log e que, desde o WordPress 5.1, ela aceita também um caminho de arquivo. Prefira um caminho fora da pasta pública — um debug.log acessível pela web entrega caminhos do servidor e nomes de plugins a quem pedir:
define( 'WP_DEBUG_LOG', '/home/usuario/logs/wp-debug.log' );Recarregue a página que quebra e leia o fim do arquivo:
# as 5 últimas linhas de erro fatal
grep "PHP Fatal error" wp-content/debug.log | tail -n 5
# quais plugins aparecem nos erros fatais, do mais citado ao menos
grep "PHP Fatal error" wp-content/debug.log | grep -o "wp-content/plugins/[^/]*" | sort | uniq -c | sort -rn
# sem debug.log? o log de erros do PHP da hospedagem costuma ter a mesma linha
tail -n 50 ~/logs/error_logTabela: linha do log → culpado → ação
O WordPress só trata como crítico os erros dos tipos E_ERROR, E_PARSE, E_USER_ERROR, E_COMPILE_ERROR e E_RECOVERABLE_ERROR. Linhas de PHP Warning, Notice e Deprecated enchem o log, mas não derrubam o site — ignore-as nesta investigação e procure a linha PHP Fatal error ou PHP Parse error mais recente.
| Trecho da linha | Culpado | Ação |
|---|---|---|
Uncaught Error: Call to undefined function … in …/wp-content/plugins/X/… | Plugin X, ou um plugin do qual X depende e que está desativado | Desativar X; conferir se a dependência dele está ativa |
Class "…" not found in …/plugins/X/… | Complemento sem o plugin principal (por exemplo, extensão ativa com o plugin-base desativado) | Ativar o plugin-base ou desativar o complemento |
Cannot redeclare nome_da_funcao() (previously declared in A) in B | Dois arquivos definem a mesma função: A e B | Remover a duplicata — comum em código colado duas vezes no functions.php |
PHP Parse error: syntax error, unexpected … | O arquivo e a linha citados, editados à mão | Desfazer a última edição daquele arquivo |
Uncaught TypeError: …: Argument #1 … must be of type array, null given | Plugin ou tema não compatível com a versão atual do PHP | Atualizar o plugin; se não houver versão nova, voltar o PHP e trocar o plugin |
Call to undefined function create_function() | Código antigo: a função foi removida no PHP 8.0 | Atualizar ou substituir o plugin ou tema |
Allowed memory size of N bytes exhausted | Não necessariamente o arquivo citado: ele é só onde a memória acabou | Ver qual plugin aparece no rastreamento; aumentar o limite só depois |
Maximum execution time of N seconds exceeded | Tarefa pesada (importação, backup, chamada externa lenta) | Rodar a tarefa pelo WP-CLI ou em lotes |
Arquivo em wp-content/themes/Y/ | Tema Y (ou o tema-pai dele) | Trocar temporariamente para um tema padrão |
Arquivo em wp-content/mu-plugins/ | Must-use plugin: o modo de restauração não detecta | Renomear o arquivo por FTP ou gerenciador de arquivos |
Arquivo em wp-includes/ ou wp-admin/ | Quase nunca é o núcleo: leia as linhas #0, #1… do rastreamento | O primeiro caminho com plugins/ ou themes/ no rastreamento é o suspeito |
A exceção prometida: o WordPress aponta o culpado pelo arquivo onde o erro explodiu, não por quem o provocou. Se o plugin A chama uma função do plugin B com dados errados e o erro estoura dentro de B, o e-mail culpa B. E se o erro estoura dentro do núcleo, o WordPress não identifica plugin nenhum e nem manda e-mail. Nos dois casos, o rastreamento (Stack trace) logo abaixo da linha do erro mostra a cadeia de chamadas: leia de cima para baixo e anote cada caminho de plugin ou tema que aparecer.
Desativar só o culpado, sem painel
Com o nome do plugin na mão, desative só ele. Pelo WP-CLI, os parâmetros --skip-plugins e --skip-themes fazem o comando rodar sem carregar o código que está quebrando:
# confirmar o nome exato da pasta
wp plugin list --skip-plugins --skip-themes
# desativar só o culpado
wp plugin deactivate nome-do-plugin --skip-plugins --skip-themes
# voltar para a versão anterior que funcionava
wp plugin install nome-do-plugin --version=1.2.3 --force --skip-plugins --skip-themesSem SSH, renomeie a pasta do plugin por FTP ou pelo gerenciador de arquivos da hospedagem (nome-do-plugin para nome-do-plugin.off). O WordPress só carrega plugins cujo arquivo principal existe, então o plugin renomeado deixa de rodar já na próxima requisição. Para tema, o equivalente é renomear a pasta do tema ativo: ao abrir o painel, o WordPress detecta o tema inválido e volta para o tema padrão — se houver um tema padrão instalado.
Evite o reflexo de desativar todos os plugins. Em loja, isso derruba checkout, cache e segurança de uma vez, e reativar um por um num site com 40 plugins leva mais tempo que ler uma linha de log.
Depois do conserto: desligue o que você ligou
- Volte o
WP_DEBUGparafalsee apague odebug.logse ele ficou na pasta pública. - Saia do modo de restauração pelo aviso no topo do painel.
- Anote a causa — plugin, versão, versão do PHP. Se foi uma atualização automática, desligue a atualização automática daquele plugin até a correção sair.
- Confira o site por fora:
curl -sI https://seudominio.com.br/ | head -1tem que voltar 200, não 500.
Erro crítico logo depois de atualização é a regra, não a exceção — vale planejar a atualização em vez de reagir a ela, como detalhamos no guia para atualizar o WordPress com segurança. E se o log mostrar arquivo que você não reconhece, em pasta que você não criou, o problema pode não ser bug: é hora do nosso checklist de hardening do WordPress, começando pela seção de como saber se já entraram.
Perguntas frequentes
Por que não recebi o e-mail do modo de restauração?
O WordPress só envia quando o erro vem de um plugin ou tema, acontece no painel, na tela de login ou em ações AJAX protegidas, não houve outro envio nas últimas 24 horas e o site consegue enviar e-mail. Erro que só aparece no front-end mostra a tela, mas não dispara o envio. Abra o wp-admin para forçar a tentativa.
O modo de restauração conserta o site para os visitantes?
Não. Ele pausa o plugin ou tema culpado apenas para a sua sessão, para você conseguir usar o painel. Para os visitantes o site continua quebrado até você desativar, atualizar ou substituir o culpado.
Posso deixar o WP_DEBUG ligado em produção?
Com WP_DEBUG_DISPLAY em false o visitante não vê o erro, mas o log cresce e, se ficar em wp-content, pode ser baixado por qualquer pessoa. Use um caminho fora da pasta pública durante a investigação e volte WP_DEBUG para false quando terminar.
O erro aponta para um arquivo do wp-includes. O núcleo está corrompido?
Quase nunca. O arquivo citado é onde o erro explodiu, não quem o causou. Leia as linhas numeradas do rastreamento abaixo do erro e procure o primeiro caminho com plugins ou themes: esse é o suspeito real.
Aumentar o limite de memória resolve o erro crítico?
Só quando a linha do log é Allowed memory size exhausted, e mesmo assim é paliativo. O arquivo citado é onde a memória acabou; o rastreamento mostra qual plugin estava consumindo. Aumentar o limite sem olhar isso só adia a próxima queda.






