WordPressでページャーを実装する際、そもそもページャーが表示されなかったり、ページ遷移がうまくいかないという事態に直面したことはないでしょうか。

私は幾度もあります。

今回、ページャーが表示がうまくいかないときのケースをまとめたので、問題解決の手助けになればと思います。

そもそもページャーが表示されない。

ページャー自体が表示されないときは、まずコードの記述ミスがないか確認しましょう。

コードのミスがない場合は、
「管理画面の表示設定の件数より、実際の投稿数が少ない。」
ということが考えられます。

ケース

例えば、下記のケースを考えましょう。

  • 記事数は15件
  • WP_Queryのクエリで10件と指定
  • 管理画面の表示設定で20件と指定

このケースだと、管理画面で指定した20件よりも実際の記事数が少ないです。
このような場合、ページャーは不要だと判断され表示されません。

クエリで10件と指定しているため、1ページ目に表示される記事数は10件です。
しかし、ページャーが表示されないため、残りの5件を見ることはできません。

解決策

このケースの解決策はこちらです。

  1. 管理画面の表示設定の件数と、クエリで指定した件数を一致させる
  2. 管理画面の表示設定の件数を調節し、クエリでの件数指定を削除

今回のケースであれば、下記のいずれか一方を行いましょう。

  1. 管理画面の表示設定の件数を10件に変更する
  2. 管理画面の表示設定の件数を10件に変更し、クエリの指定を削除

いずれにせよ、管理画面の表示設定を10件としてあげれば、ページャーは正常に表示されます。

ページャーは表示されるが、空白のページがある

ケース

このような問題は、下記のようなケースで発生します。

  • 記事数は25件
  • WP_Queryのクエリで20件と指定
  • 管理画面の表示設定で10件と指定

解決策

このケースの解決策は、ページャー自体が表示されないときと同じです。

  1. 管理画面の表示設定の件数と、クエリで指定した件数を一致させる。
  2. クエリの指定を削除

今回であれば、

  1. WP_Queryのクエリの件数を10件or20件に変更する
  2. クエリの指定を削除

いずれかを行いましょう。

2ページ目以降、1ページ目と同じ記事が表示される

この問題が発生する原因は、pagedの指定がないことが考えられます。

<?php
    //pagedの設定
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;

    $the_query = new WP_Query(
      array(
        'post_status' => 'publish',
        'post_type' => 'blog',
        'posts_per_page' => 10,
        'paged' => $paged,
      )
    );
  ?>

WP_Queryのクエリに、上記pagedを入れてあげることで解決できます。

まとめ

上に挙げたケース以外にもページャーがうまく表示されないケースはあります。
しかし、その大半は管理画面の表示設定かpagedの指定に原因があります。
今後、他のケースが判明し次第追記していく予定です。

最後までお読みいただきありがとうございました!