the_posts_pagination() — Paginação nativa do WordPress
Causa
Implementar paginação manualmente com next_posts_link() e previous_posts_link() gera markup inconsistente e não oferece navegação por número de página.
Como resolver
Use the_posts_pagination() para paginação numerada completa. Configure o argumento mid_size para controlar quantas páginas aparecem ao redor da atual.
PHP
<?php
// Em template de arquivo (archive.php, category.php, etc.)
if (have_posts()) :
while (have_posts()) : the_post();
// ... template do post
endwhile;
the_posts_pagination([
'mid_size' => 2,
'prev_text' => '← Anterior',
'next_text' => 'Próximo →',
'screen_reader_text' => 'Navegação de posts',
'aria_label' => 'Posts',
]);
endif;
// Para queries customizadas (WP_Query)
$query = new WP_Query(['post_type' => 'produto', 'paged' => get_query_var('paged')]);
if ($query->have_posts()) {
while ($query->have_posts()) { $query->the_post(); /* ... */ }
wp_reset_postdata();
echo paginate_links([
'total' => $query->max_num_pages,
'current' => max(1, get_query_var('paged')),
'format' => '?paged=%#%',
]);
}