Como corrigir avisos de Deprecated no PHP 8 do WordPress
O que é os avisos de Deprecated no PHP 8?
Os avisos de Deprecated no PHP 8 do WordPress são notices que o PHP emite quando o código usa funções, sintaxes ou comportamentos que continuam válidos, mas estão programados para serem removidos. O PHP 8.0 e o 8.1 endureceram várias regras antigas, então plugins e temas escritos para o PHP 7 passaram a disparar esses avisos. Diferente de um erro fatal, o site continua no ar: o problema é estético (avisos na tela) e preventivo (o recurso vai sumir em uma versão futura e aí vira erro).
Como identificar
- Mensagens iniciadas por “Deprecated:” no topo das páginas ou no wp-content/debug.log, como “Deprecated: Required parameter follows optional parameter”.
- Variações comuns do PHP 8.1 como “Deprecated: Passing null to parameter #1 ($string) of type string is deprecated” disparadas por funções como trim() e strlen().
- O debug.log cresce rápido com dezenas de linhas Deprecated repetidas a cada carregamento de página.
- Os avisos surgiram logo após o host atualizar a versão do PHP do plano para 8.0, 8.1 ou superior.
Como prevenir
- Mantenha plugins, tema e o core do WordPress sempre atualizados para versões compatíveis com o PHP 8
- Em produção, deixe WP_DEBUG_DISPLAY como false e revise o debug.log periodicamente
- Antes de o host subir a versão do PHP, teste o site em uma cópia de homologação na nova versão
Causa
- Plugin ou tema desatualizado que usa sintaxe antiga, como parâmetro obrigatório depois de parâmetro opcional na assinatura de funções.
- Funções de string do PHP recebendo null em vez de texto (trim(null), strlen(null)), comportamento descontinuado no PHP 8.1.
- Uso de chaves para acessar caracteres de string ($texto{0}), removido em favor de colchetes ($texto[0]).
- Métodos sem tipo de retorno em classes que estendem interfaces internas do PHP, que passaram a exigir o atributo de compatibilidade.
- WP_DEBUG e WP_DEBUG_DISPLAY ligados em produção, fazendo os avisos aparecerem na tela do visitante.
Como resolver
- Identifique o arquivo que dispara o aviso: abra o wp-content/debug.log e veja o caminho citado em cada linha Deprecated. Ele aponta o plugin ou o tema responsável.
- Atualize plugins e tema: a correção real é atualizar para versões compatíveis com o PHP 8. A maioria dos desenvolvedores já lançou releases que eliminam os avisos.
- Esconda os avisos do visitante em produção: no wp-config.php, mantenha o log ligado mas desligue a exibição na tela, para o site não mostrar Deprecated ao público enquanto você atualiza:
define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); define('WP_DEBUG_LOG', true); - Substitua um plugin sem atualização: se um plugin não recebe atualização há tempos e segue disparando Deprecated, troque-o por um equivalente mantido, em vez de remendar o código de terceiros.
- Não rebaixe o PHP só pelos avisos: voltar para o PHP 7 esconde o problema, mas perde segurança e desempenho. Prefira atualizar o código e manter o PHP 8.
// EXEMPLO do que dispara o aviso no PHP 8 e como ajustar a assinatura
// ANTES (Deprecated: required parameter follows optional parameter):
function monta_link( $texto = 'Leia mais', $url ) {
return '<a href="' . $url . '">' . $texto . '</a>';
}
// DEPOIS: parametro obrigatorio vem primeiro; o opcional, por ultimo
function monta_link( $url, $texto = 'Leia mais' ) {
return '<a href="' . $url . '">' . $texto . '</a>';
}














