ある日、気まぐれで歴史会議(rekishikaigi.com)のトップページのページネーションをクリックすると、2ページ以降が全く表示されませんでした。
顔面蒼白になりながら原因を調査すると、単純なミスで表示されていないだけでした。
しかし、解決するのに数日を要したので備忘録として記事に、同じ悩みのある人にお伝えすることにしました。
では、今回の講義を始めます。
ページネーションの設定
WordPressの利用者あるあるだと思います。
URLから/category/を無くす方法はどうやっていますか?
きっとこの方法で実施していると思います。
- 管理画面「パーマリンク」に進む
- カスタム構造を “/%category%/%postname%/” とする
- カテゴリーベースに “.”を入れる
しかし、実はこれがページネーションで2ページ目が表示されない原因なのです。
つまり、この設定をすると必ず2ページ以降が404エラーになるのです。
ということは、カテゴリーベースに”.”を入れる以外の方法でURLの/category/を消す必要があります。
functions.phpに設定を追加する
解決方法は至極簡単です。
下記のPHPコードをfunctions.phpに追加してください。
それだけで簡単に解決します。
function adjust_category_paged( $query = []) {
if (isset($query['name'])
&& $query['name'] === 'page'
&& isset($query['page'])
&& isset($query['category_name'])) {
$query['paged'] = intval($query['page']); // 念のため整数化しておく
unset($query['name']);
unset($query['page']);
}
return $query;
}
add_filter('request', 'adjust_category_paged');
このコードの意味は、“.“を入れることで2ページ目以降の整数が取得されずにクエリが正常に機能していなかったものを、正常に機能するようにしています。
スポンサーリンク
まとめ
カテゴリベースに“.“を入れる手法は、以前のWordPressでは頻繁にしていました。
調べると、この手法が多く出回っています。
しかし、WordPressも常に進化して発展しているので、以前の方法だとエラーになることがあるのは当たり前です。
運営者側は常にそれを胸に秘めて運営していく必要があることを再確認しました。
これからも動作確認は定期的に実施していきます。
今回の講義はこれで終わります。
では、またお会いしましょう!
スポンサーリンク