番号付きページ送りで2ページ目が表示されない時に確認したいこと

WordPressのアーカイブページなんかには絶対ついている番号付きのページ送り(ページネーション)。

絶対使うけど何故かいつも躓くので備忘録として記事にしてみた。

今回使うページ送りの関数

paginate links

詳しくはWordPress Codexをみよう!

new WP_Queryでループのクエリを作成している場合

コンテンツ部分(ループ)

<div class="archiveList">
	<?php
  	   $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;//ポイント1
      $args = array(
        'paged' => $paged,//ポイント2
        'posts_per_page' => 12,//ポイント3
       );
    $query = new WP_Query( $args );
    ?>
    <?php if( $query->have_posts() ) : ?>
      <?php while ( $query->have_posts() ) : $query->the_post(); ?>
        //ループコンテンツ
      <?php endwhile; wp_reset_postdata(); ?>
    <?php else : ?>
      <p class="">記事が見つかりませんでした。</p>
    <?php endif; ?>
</div>

ポイント1

$paged = ( get_query_var( ‘paged’ ) ) ? absint( get_query_var( ‘paged’ ) ) : 1;を忘れないように付け足すこと!

ポイント2

‘paged’ => $paged’を付与

*ちなみに私はいつも上記ポイント2点忘れます。そりゃ2ページ目以降表示できないよね。

ポイント3

wp_queryでposts_per_pageを必ず指定すること。

ページ送り部分

<div class="pagination">
   <div class="pagination-inner">
     <?php
       $big = 999999999; // need an unlikely integer
       echo paginate_links([
         'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
         'format' => '?page=%#%',
         'current' => max(1, get_query_var('paged')),
         'total' => $query->max_num_pages,
         'prev_text' => __('&lt;'),
         'next_text' => __('&gt;'),
       ]);
    ?>
  </div>
</div><!-- pagination -->

WordPress Codexには

new WP_Queryでループのクエリを作成している場合、’total’ パラメーターにWP_Queryオブジェクトの max_num_pages プロパティを設定してください

WordPress Codexより

totalパラメーターにmax_num_pages プロパティを設定するように書かれているので忘れずに設定しましょう。

その他2ページ目以降が表示されない時に試すこと

管理画面から投稿数の設定を見直す

WordPressの管理画面より、

設定>表示設定

で、1ページに表示する最大投稿数を”1″にします。

*変更したら保存を忘れず!

まとめ(番号付きページ送りで2ページ目以降が表示されない時にチェックすること早見)

コンテンツ部分

  • $paged = ( get_query_var( ‘paged’ ) ) ? absint( get_query_var( ‘paged’ ) ) : 1;を忘れないように付け足すこと!
  • ‘paged’ => $pagedの指定

ページ送り部分

  • 管理画面表示設定より1ページに表示する最大投稿数を”1″にする
  • wp_queryで1ページに表示する投稿数を指定
  • totalパラメーターにmax_num_pagesプロパティを指定

その他

  • 管理画面の表示設定より1ページに表示する最大投稿数を”1″に設定