
Tela branca ou fatal error no ar e a mensagem não pode aparecer pro visitante. O caminho é jogar tudo num arquivo: WP_DEBUG liga o relatório, WP_DEBUG_LOG grava e WP_DEBUG_DISPLAY corta a saída na tela.
Elas ficam acima do comentário /* That's all, stop editing! */. Depois dessa linha o wp-settings.php já rodou, e a wp_debug_mode() não olha mais pras constantes. Não é superstição, é ordem de carregamento.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );WP_DEBUG chama error_reporting( E_ALL ). WP_DEBUG_LOG em true aponta o error_log do PHP pra wp-content/debug.log. E WP_DEBUG_DISPLAY em false faz o próprio WordPress rodar ini_set( 'display_errors', 0 ) — você não precisa repetir isso à mão, como muito tutorial manda. Está tudo em wp-includes/load.php.
O arquivo nasce na primeira notice. Eu deixo um tail aberto num terminal e reproduzo o erro no navegador, assim dá pra amarrar cada linha à requisição que gerou ela. Pra ligar sem abrir editor, o WP-CLI já ancora as constantes no lugar certo do arquivo:
cd /var/www/seusite/html
sudo -u www-data wp config set WP_DEBUG true --raw
sudo -u www-data wp config set WP_DEBUG_LOG true --raw
sudo -u www-data wp config set WP_DEBUG_DISPLAY false --raw
tail -f wp-content/debug.logwp-content/debug.log responde por URL. Quem acertar o endereço lê caminho de servidor, prefixo de tabela e trecho de query. Desde o WordPress 5.1 a constante aceita um caminho em vez de true, então aponte pra fora da pasta pública:
define( 'WP_DEBUG_LOG', '/var/log/wordpress/meusite-debug.log' );O usuário do PHP-FPM (normalmente www-data) precisa poder escrever nesse arquivo, senão o log some sem aviso. Terminado o diagnóstico, devolva WP_DEBUG pra false e apague o arquivo: com um plugin barulhento ele passa de 1 GB numa semana e enche o disco no pior horário possível.
504 no nginx quando a API de IA demora? Quem desiste primeiro é o nginx, não o PHP. Enfileire o…
O site caiu com erro crítico depois de atualizar um plugin e o e-mail de recuperação não chegou? Force um…
O number_format não põe o R$ nem escreve o valor por extenso. Veja como usar NumberFormatter com CURRENCY e SPELLOUT…
Categoria vazia e busca sem resultado no Magento 2.4.8? Teste o OpenSearch com curl, confira o bloco catalog/search do env.php…
Editou o listing.xml e o admin continua com as colunas antigas ou um filtro travado? O estado da grid está…
Importação morrendo com Allowed memory size exhausted? Fatie o processamento com array_chunk e, quando nem o array couber, leia o…