
つい先日、自作のワードプレステーマでページング機能を作っていたところ、うまく表示されなかったので対処法のメモ。
適切な場所にページネーションを表示する関数・the_posts_pagination()をぶち込んでいるにも関わらず、そもそも表示されないという事態でした。
スポンサーリンク
管理画面の表示設定と一致していなかった

管理画面の表示設定より、投稿が少なったでした。
どういう事か簡単に説明しますと…
今回はget_posts()でカスタム投稿を10件表示させ、11件目以降は2ページ目にしたかったので以下のような記述をしておりました。(そもそもこれも間違い?)
$paged = get_query_var('paged', 1); $args = array( 'post_type' => 'カスタム投稿スラッグ', 'paged' => $paged, 'posts_per_page' => 10 // 10件取得する ); $posts = get_posts($args); // 以下省略
そして実際の投稿されている件数は全部で12件だったんですが、管理画面の表示設定を見ると…

そう、管理画面側では1ページに表示させる最大投稿数は20件となっているので、そら12件しかなかったらそもそもページングされないよね、という話。
対処法
全てのページを、1ページ10件しか表示させない場合は管理画面をいじればいい話ですが、今回は特定のカスタム投稿(アーカイブページ)のみ10件にしたかったので、functions.phpに記述しました。
function reset_post_per_page($query) { if ($query->is_post_type_archive('投稿タイプ')) { $query->set('posts_per_page', 10); } } add_action('pre_get_posts', 'reset_post_per_page');
こうしておけば、特定の投稿ページのみ1ページに表示する最大投稿数は10件に設定ができます。
この設定はカスタム投稿だけじゃなくて、カテゴリーやタクソノミーなどなど書き方を変えれば色々設定できますが、ここでは割愛。
詳しく知りたい方は、下記のサイトがわかりやすかったのでご参考までに。
→[WordPress] ページごとに記事の表示件数を変えたい
まとめ
めちゃくちゃ単純なお話でしたね~…。
自作テーマを作っていると、あれができない!?これができない!?と度々焦るので、有料テーマを作っていらっしゃる方ってほんとすごいなあと心から尊敬します。(ちなみにこのブログはアフィンガーにお世話になっております)
今回は下記のページに大変お世話になりました。
ありがとうございました~!