WP_Query é o coração do WordPress.
Alimenta cada pedido de página. Mas é também a causa #1 de sites lentos.
Em 2026, com PHP 8.4, não podemos dar-nos ao luxo de código preguiçoso. Este guia de 1500 palavras cobre o Loop Standard, Argumentos Avançados e Perigos de Performance.
Parte 1: Loop standard vs. Secundário
1. O loop principal (global)
Acontece automaticamente.
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Template
endwhile;
endif;
2. O loop secundário (custom)
A Regra de Ouro: Use sempre new WP_Query(). Nunca use query_posts().
$args = [
'post_type' => 'post',
'posts_per_page' => 5,
'no_found_rows' => true, // CRÍTICO PARA PERFORMANCE
];
$query = new WP_Query( $args );
Parte 2: Assassinos de performance (o que não fazer)
1. Posts_per_page => -1
Nunca faça isto. Isto carrega TUDO para a RAM. Defina sempre um limite.
2. Sql_CALC_FOUND_ROWS (paginação)
Por padrão, o WP conta todas as linhas para paginação.
Se não precisa de paginação: no_found_rows => true.
3. Meta_query complexa
Metadados são lentos de pesquisar. Use Taxonomias Personalizadas para dados pesquisáveis.
Parte 3: Cenários avançados
Excluir o post atual
$args = [
'post__not_in' => [ get_the_ID() ],
];
Parte 4: Paginação em loops custom
A paginação parte frequentemente em loops custom.
Deve passar o argumento paged manualmente.
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = [
'paged' => $paged,
];
Resumo
- Use
WP_Query. - Otimize:
no_found_rows => truesem paginação. - Sanitize: Evite
posts_per_page => -1. - Reset: Sempre
wp_reset_postdata().
Escreva queries limpas.



