Как сделать пагинацию на странице?

Сделал страницу 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(); ?>
→ Ссылка