Como corrigir Headers already sent no WordPress
O que é o erro Headers already sent?
O headers already sent no WordPress é o aviso que o PHP emite quando uma função como header(), setcookie() ou um redirecionamento é chamada depois que o servidor já começou a enviar o corpo da página. No HTTP os cabeçalhos vêm antes do conteúdo, então qualquer caractere enviado cedo demais (um espaço, uma linha em branco, um BOM ou um echo) trava o envio dos cabeçalhos. A mensagem informa exatamente o arquivo e a linha onde a saída começou, o que aponta o culpado.
Como identificar
- Mensagem “Warning: Cannot modify header information – headers already sent by (output started at /caminho/arquivo.php:N)”, citando onde a saída começou.
- O login do wp-admin não persiste: você entra e é deslogado, porque o cookie de sessão não consegue ser definido.
- Redirecionamentos param de funcionar e a página mostra o aviso no topo, antes do resto do conteúdo.
- O erro surge logo após editar o wp-config.php ou o functions.php, ou após instalar um plugin que adiciona código a esses arquivos.
Como prevenir
- Em arquivos só de PHP, nunca inclua a tag de fechamento no final
- Configure o editor de código para salvar sempre como UTF-8 sem BOM
- Evite deixar echo, print ou var_dump de depuração no código que vai para produção
Causa
- Espaço em branco ou linha em branco antes da tag de abertura do PHP no início do arquivo.
- Espaço ou linha em branco depois da tag de fechamento do PHP no fim do wp-config.php ou do functions.php.
- Arquivo salvo com BOM (Byte Order Mark) UTF-8, que envia bytes invisíveis antes de qualquer cabeçalho.
- Um echo, print ou var_dump deixado no código que envia conteúdo antes do redirecionamento ou do cookie.
- Plugin ou tema que imprime aviso de erro (notice) na tela antes do WordPress definir os cabeçalhos.
Como resolver
- Leia o arquivo e a linha do output: a mensagem traz 'output started at /caminho/arquivo.php:N'. Esse é o arquivo e a linha onde a saída indevida começou. Abra-o via FTP.
- Remova espaços antes da abertura do PHP: garanta que o arquivo comece exatamente na tag de abertura, sem nenhum caractere, espaço ou linha em branco antes dela.
- Remova a tag de fechamento no fim: em arquivos só de PHP como wp-config.php e functions.php, apague a tag de fechamento do final. Sem ela, nenhum espaço acidental depois dela pode ser enviado ao navegador.
- Salve o arquivo sem BOM: no seu editor de código, escolha salvar como UTF-8 sem BOM. O BOM adiciona bytes invisíveis no começo do arquivo que disparam o erro.
- Procure echo e var_dump esquecidos: se o output vier de um plugin ou snippet, busque por echo, print ou var_dump deixados no código e remova-os.
<?php
// CERTO: a tag de abertura e o primeiro caractere do arquivo, sem espaco antes.
// Em arquivos so de PHP (wp-config.php, functions.php), NAO inclua a tag de
// fechamento no fim. Assim nenhum espaco acidental depois dela vira output.
define( 'WP_DEBUG', false );
// fim do arquivo: sem tag de fechamento, sem linha em branco extra apos isto














