Note(固定ページのページネーション)

Note WordPress
問題

WordPress化をやっている途中、投稿の全一覧ページを作成するため、通常のカテゴリーや日時での一覧とは別に固定ページを使って投稿一覧を作成、1ページに表示できる件数以上の時の切り替えとしてページネーションを作成しようと思いましたが、archive.phpと同じページネーションを作成したが動かない!
固定ページではページネーションは【 the_posts_pagination(); 】は使えないことがわかりました。

解決

そもそもカスタムテンプレートである固定ページには、記事のループやページネーションを組むという想定がないことが原因のようです。
下記のコード(コンテンツの表示部分とページネーション部分)で固定ページへのページネーションを実装することができます。

<div class="contents">
   <?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
   $the_args = array(
      'post_status' => 'publish',
       'paged' => $paged,
       'posts_per_page' => 4, // 表示させる投稿数
       'orderby'     => 'date',
       'order' => 'DESC'
   );

   <!-- ここからサブループ -->
    $the_query = new WP_Query($the_args);
        if ($the_query->have_posts()) :
            while ($the_query->have_posts()) :
                $the_query->the_post();
    ?>

    <!-- ここにループさせるコンテンツをいれる -->

            <?php endwhile;
            wp_reset_postdata(); ?>
        <?php endif; ?>

    <!-- ページネーション -->
    <div class="pnavi">
        <?php //ページリスト表示処理
        global $wp_rewrite;
        $paginate_base = get_pagenum_link(1);
        if (strpos($paginate_base, '?') || !$wp_rewrite->using_permalinks()) {
            $paginate_format = '';
            $paginate_base = add_query_arg('paged', '%#%');
        } else {
            $paginate_format = (substr($paginate_base, -1, 1) == '/' ? '' : '/') .
                user_trailingslashit('page/%#%/', 'paged');
            $paginate_base .= '%_%';
        }
        echo paginate_links(array(
            'base' => $paginate_base,  //URLのベース
            'format' => $paginate_format,  //ページネーションのリンクの構造
            'total' => $the_query->max_num_pages, //ページ数(全ページを指定)
            'mid_size' => 2, //ページリスト表示処理
            'current' => ($paged ? $paged : 1), //現在のページの位置
            'prev_text' => '前へ',
            'next_text' => '次へ',
        ));
        ?>
    </div>
</div>

なんとか解決です!

コメント