DesenvolvedorWordPress WhatsApp

Spread e wp_parse_args fazem coisas diferentes

Confundir os dois causa aquele bug em que os defaults somem em vez de serem sobrescritos.

Falar comigo no WhatsApp

Dica de PHP · publicada em

wp_parse_args($args, $defaults) é o idiomático no WordPress: mescla arrays associativos, com $args vencendo. Ele é raso, então array aninhado é substituído inteiro, não mesclado — o que pega muita gente em meta_query.

O spread [...$a, ...$b] também mescla, mas trata chave numérica de forma diferente: em vez de sobrescrever pelo índice, ele reindexa e concatena. Para lista isso é o que você quer; para array associativo com chaves numéricas, é surpresa.

Regra prática: array de opções nomeadas, use wp_parse_args. Concatenar listas, use spread. E quando precisar de mesclagem profunda, escreva a função recursiva — nenhum dos dois faz isso.

$defaults = ['post_type' => 'post', 'posts_per_page' => 10];
$args = wp_parse_args($args, $defaults);   // associativo

$todos = [...$ids_a, ...$ids_b];           // listas concatenadas

// atencao: nenhum dos dois faz merge profundo
// $args['meta_query'] substitui o default inteiro

Na prática: opções nomeadas: wp_parse_args. Listas: spread. Aninhado: escreve merge recursivo.

Precisa resolver isso no site de um cliente agora?

Me chame no WhatsApp com o contexto. Diagnóstico inicial sem compromisso.

WhatsApp: (43) 99932-9697

ou e-mail: [email protected]

Tem alguma dúvida? Ficarei feliz em ajudar. Clique Aqui