WP_Query — Loop customizado com paginação
Causa
O loop padrão do WordPress não é suficiente quando você precisa de múltiplos loops ou consultas complexas com filtros combinados.
Como resolver
Instancie WP_Query com os argumentos necessários. Sempre chame wp_reset_postdata() ao final para restaurar o post global.
PHP
<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$query = new WP_Query([
'post_type' => 'produto',
'posts_per_page' => 12,
'paged' => $paged,
'post_status' => 'publish',
'tax_query' => [[
'taxonomy' => 'categoria_produto',
'field' => 'slug',
'terms' => 'eletronicos',
]],
'meta_query' => [[
'key' => '_preco',
'value' => 100,
'compare' => '>=',
'type' => 'NUMERIC',
]],
]);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<div>' . get_the_title() . '</div>';
}
echo paginate_links(['total' => $query->max_num_pages]);
}
wp_reset_postdata();