Como corrigir Undefined array key no PHP 8 do WordPress
O que é o aviso Undefined array key no PHP 8?
O Undefined array key no PHP 8 do WordPress é o aviso emitido quando o código acessa uma chave de array inexistente, como $_POST[‘campo’] sem que o campo tenha sido enviado, ou $opções[‘cor’] sem que essa opção exista no array. No PHP 7 isso gerava um notice mais discreto; no PHP 8.0 ele virou um Warning, mais visível. Não é fatal, então a página continua carregando, mas o aviso aparece e sinaliza que falta uma checagem de existência (isset ou null coalescing) antes de ler a chave.
Como identificar
- Mensagem “Warning: Undefined array key “nome_da_chave” in /caminho/arquivo.php on line N”, citando a chave, o arquivo e a linha.
- Variações com chave numérica, como “Warning: Undefined array key 0”, quando o código espera um item de array que não veio.
- Os avisos enchem o wp-content/debug.log e podem aparecer no topo de páginas, em formulários ou em telas de configuração de plugins.
- O problema apareceu logo após o host atualizar a versão do PHP do plano para 8.0 ou superior.
Como prevenir
- Sempre cheque chaves de $_POST, $_GET e de opções com isset() ou ?? antes de lê-las
- Mantenha plugins, tema e o core atualizados para versões compatíveis com o PHP 8
- Em produção, deixe WP_DEBUG_DISPLAY como false e acompanhe o debug.log
Causa
- Leitura de $_POST, $_GET ou $_REQUEST com uma chave que nem sempre é enviada (campo de formulário opcional ou ausente).
- Acesso a uma opção de plugin ou tema antes de ela existir no array salvo, comum na primeira execução após instalar.
- Plugin ou tema escrito para o PHP 7 que lia chaves inexistentes sem checar, o que só virou Warning no PHP 8.
- Resultado de uma função (como wp_parse_args ou shortcode_atts) acessado por uma chave que o array retornado não contém.
- WP_DEBUG e WP_DEBUG_DISPLAY ligados em produção, expondo os avisos ao visitante na tela.
Como resolver
- Localize a chave e o arquivo no aviso: a mensagem cita a chave entre aspas, o arquivo e a linha. Isso aponta exatamente qual acesso ao array está sem verificação.
- Atualize o plugin ou o tema responsável: se o arquivo citado é de um plugin ou tema, atualize-o. As versões compatíveis com o PHP 8 já protegem esses acessos a array.
- Proteja o acesso com isset ou coalescência nula: em código próprio, verifique a chave antes de ler, usando isset() ou o operador de coalescência nula com um valor padrão.
- Esconda os avisos do visitante em produção: no wp-config.php, registre os avisos no log mas não os exiba na tela enquanto corrige:
define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); define('WP_DEBUG_LOG', true); - Revise o debug.log após corrigir: depois de atualizar plugins e ajustar o código, confira o debug.log para confirmar que os avisos Undefined array key pararam de surgir.
// ANTES (dispara Warning: Undefined array key quando o campo nao vem):
$cidade = $_POST['cidade'];
// DEPOIS, opcao 1 — coalescencia nula com valor padrao:
$cidade = $_POST['cidade'] ?? '';
// DEPOIS, opcao 2 — checagem explicita antes de usar:
if ( isset( $_POST['cidade'] ) ) {
$cidade = sanitize_text_field( wp_unslash( $_POST['cidade'] ) );
} else {
$cidade = '';
}














