WordPressで、検索結果の3ページが表示されない!
WordPressで検索フォームのカスタマイズをしていたところ、検索結果ページに表示されるページネーションがうまく動かず、はまったので書き留めておこうと思います。
陥った状況
検索フォームを設置し、検索結果ページで条件を絞り込んだ記事をsearch-{slug}.php
で出力するように設定していました。
ページネーションが3ページ分まであり、1・2ページ目は問題なくsearch-{slug}.php
で表示されます。
が、3ページ目を選択するとindex.phpに飛ばされてしまう、という状況でした。
原因と考察
結論から言うと、WordPressの表示設定と、検索結果で指定した表示件数が違ったことが原因でした。
管理画面メニューの[設定]→[表示設定]において、[1ページに表示する最大投稿数]は5件に設定していました。
一方、検索結果ページではサブループをつかって記事を出力していたのですが、表示件数の指定posts_per_page
は3件になっていました。
(まだカスタマイズの途中だったので適当に数字を入れていました。)
例えば検索結果にヒットする記事は7件あった場合、WordPressの表示設定は1ページあたり5件なので、1・2ページで結果が表示されるはずです。
しかしサブループで記事を出力する際の設定は、1ページあたり3件としていたので1・2・3ページで結果を表示しようとしていることになります。
そのため、3ページ目だけがエラーになったようです。
今回の件で、posts_per_page
の値を「WordPressの表示設定」よりも少なく設定してしまうとエラーが起こることがわかりました。
私の場合、404.php
ファイルを用意していなかったのでindex.php
に飛ばされたというわけです。
逆にposts_per_page
の値が「WordPressの表示設定」よりも大きく設定する分には問題ありませんでした。
まとめ
いかがでしたか?
ちょっとした事なのですが、初めてのことだったので解決までずいぶん時間がかかってしまいました。
サブループを使って記事を出力するのは検索結果ページに限った話ではありませんので、表示件数を設定する際には十分注意しようと思います。
最後までご覧いただきありがとうございました。