WordPress ページネーション

大前提として、ページネーションは固定ページで実装すること

投稿ページだと、ページの概念がないため

固定ページblogを作成 URLスラッグをblog-eventsにしておく

これで page-blog-events.php で、ページネーションが作用するようになった。

カスタムクエリに追記する

page-blog-events.php

      <?php
            $args = array(

//pagedが必要
                'paged' => get_query_var('paged', 1),
                'post_type' => 'blog',
                'posts_per_page' => 12,
            );
            $blog_query = new WP_Query($args);
          
            ?>

get_query_var の第2引数は1にしておく。最初のページという事

関数リファレンス/get query var - WordPress Codex 日本語版

         <?php
            $args = array(

                //pagedが必要
                'paged' => get_query_var('paged', 1),
                'post_type' => 'post',
                'posts_per_page' => 10,
            );
            $blog_query = new WP_Query($args);
          
            ?>
          <?php if ($blog_query->have_posts() ) : ?>
          <?php while ($blog_query->have_posts()) : $blog_query->the_post() ; ?>

ページネーション

echo paginate_linksを利用する

<?php echo paginate_links( $args ); ?>

公式サイト

関数リファレンス/paginate links - WordPress Codex 日本語版

引数のデフォルト

<?php $args = array(
    'base'               => '%_%',
    'format'             => '?page=%#%',
    'total'              => 1,
    'current'            => 0,
    'show_all'           => False,
    'end_size'           => 1,
    'mid_size'           => 2,
    'prev_next'          => True,
    'prev_text'          => __('&laquo; Previous'),
    'next_text'          => __('Next &raquo;'),
    'type'               => 'plain',
    'add_args'           => False,
    'add_fragment'       => '',
    'before_page_number' => '',
    'after_page_number'  => ''
); ?>

カスタムクエリは$blog_query

max_num_pagesはプロパティ

   <?php $args = array(
                    'total' => $blog_query->max_num_pages
                    ); 
         echo paginate_links( $args ); ?>

味気ないけど上記でこれが表示される

ulタグ liタグともに クラスは page-numbers 現在ページには spanタグを出力する

なので、このクラスにページネーションのクラスを当てる

完成形

ls40