Краткий экскурс в пагинацию
В этот раз мы будем делать пагинацию на Wordpress.
Для начала, нам придётся временно переопределить глобальный запрос:
$global_wp_query = $wp_query;
Затем, зададим страницу по умолчанию:
$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1;
И сформируем наш запрос, указав параметр posts_per_page вместо pagenumbers:
$wp_query = new WP_Query([
'posts_per_page' => 15,
'post_type' => 'post',
'paged' => $paged,
]);
Выводим в цикле наши записи:
<?php while ($wp_query->have_posts()) : $wp_query->the_post() ?>
...
<?php endwhile; wp_reset_postdata() ?>
И пагинацию:
the_posts_pagination([
'total' => $wp_query->max_num_pages,
'mid_size' => 3,
'prev_next' => true,
'prev_text' => '←',
'next_text' => '→',
]);
И не забываем пере-переопределить (ну, то есть, вернуть) глобальный запрос:
$wp_query = $global_wp_query;
Изменить внешний вид выводимой пагинации можно хуком:
add_filter('navigation_markup_template', function ($template, $class) {
return
'<nav class="navigation %1$s" role="navigation">'.
' <div class="nav-links">%3$s</div>'.
'</nav>';
}, 10, 2);