Как сделать пагинацию на странице?
Сделал страницу news/. К ней подключил шаблон. В шаблоне код. Пытался вывести пагинацию разными способами - не работает ни один. Просто не появляются кнопки.
Пробовал Bootstrap-wordpress-pagination - тоже ничего.
Может нужно было что-то внести в functions.php? Т.к он почти пустой (делал с нуля).
<?php get_header(); ?>
<main class="page-main">
<?php
$args = array (
'post_type' => array( 'post' ),
'post_status' => array( 'publish' ),
'posts_per_page' => '2',
'posts_per_archive_page' => '10',
);
// запрос
$wpb_all_query = new WP_Query($args); ?>
<?php if ( $wpb_all_query->have_posts() ) : ?>
<ul>
<!-- the loop -->
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
<!-- end of the loop -->
</ul>
<?php wp_reset_postdata(); ?>
<?php the_posts_pagination(); ?>
<?php else : ?>
<p><?php _e( 'Извините, нет записей, соответствуюших Вашему запросу.' ); ?></p>
<?php endif; ?>
</main>
<?php get_footer(); ?>
Ответы (1 шт):
Автор решения: KodimWeb
→ Ссылка
Дело в том, что пагинация не будет работать со стандартной функцией the_posts_pagination(), так как на странице не определены переменные запроса для построения пагинации (например, $page). Что бы пагинация работала, придется немного поколдовать. Реализация будет основана на paginate_links(). В вашем случае код будет выглядеть так:
<?php
get_header();
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
?>
<main class="page-main">
<?php
$args = array (
'post_type' => array( 'post' ),
'post_status' => array( 'publish' ),
'posts_per_page' => '2',
'posts_per_archive_page' => '10',
'paged' => $paged,
);
// запрос
$wpb_all_query = new WP_Query($args);
?>
<?php if ( $wpb_all_query->have_posts() ) : ?>
<ul>
<!-- the loop -->
<?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
<!-- end of the loop -->
</ul>
<?php wp_reset_postdata(); ?>
<?php
// пагинация для произвольного запроса
$big = 999999999; // уникальное число
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'current' => max( 1, get_query_var('paged') ),
'total' => $wpb_all_query->max_num_pages
) );
?>
<?php else : ?>
<p><?php _e( 'Извините, нет записей, соответствуюших Вашему запросу.' ); ?></p>
<?php endif; ?>
</main>
<?php get_footer(); ?>