【WordPress】ページネーションがおかしいとき

最終更新日: 公開日: 2022年08月

WordPress でカテゴリーページにおいて,ページ送り(ページネーション)のリンクがおかしくなって動作しない,表示されないというときの対策方法について書く.


下の「1 2 ... 5 次のページへ」がページネーション

ページネーション(pagination)のおかしくなった具体例

設定→パーマリンク設定

「カスタム構造」を選択していて,

/%category%/%postname%

のような設定をしている.

/カテゴリーのスラッグ/記事名

というファイルパスになる場合

ページネーションのリンク

上記のような設定をしている場合に,カテゴリーページにページネーションを置いた場合,カテゴリーページのページ送りのリンクは

/カテゴリーのスラッグ/page/ページ番号

というリンクになる.
そこまでは問題ないのだが,そのままこのリンクを押すと Not Found となる.
実際には

/category/カテゴリーのスラッグ/page/ページ番号

という呼び方なら正しくページ送りのページに飛べる.
このような状態になった時の解決方法を説明する.

本当のページ

このような時の確認方法として,まず

/index.php?category_name=カテゴリースラッグ&paged=ページ番号

で正しく表示されるかどうかは確認しておく.これが表示されないようだと根本的におかしいのでこのページの方法では解決できない.

便利なプラグイン

結局,この問題というのはリライトルール(書き換え規則)がうまく行っていないので,そのルールがどのように適用されているかについて確認すればよい.

こういう時にリライトルール(rewrite rule)を確認する便利なプラグインが存在する.

これを入れて,実際に404エラーになる URL を入れてテストしてみる.

そうすると動きが分かりやすくなる.

なお,このプラグインはずっと入れておく必要はないので,リライトルールの書き替えがうまく行った場合は削除して構わない.

Rewrite Rules Inspector の使い方

以下では,http://exp/ というサイトで試している.
case というカテゴリーがあったとしよう.

この時,
http://exp/category/case/page/2
だと正常にアクセス出来る.

その場合に,
http://exp/case/page/2
でアクセスしようとしたら,Page Not Found と怒られる.

このような場合にどのように書き替えるかを説明する.

書き換える前

このエラーが出る状態で,rewrite rule inspector で確認すると,以下のようになる.

これを見ると分かるが,固定ページを探しに行っている.
そして,そのような固定ページはないので 404 Not Found となる.

書き換えた後

functions.php に以下のように書き換えルールを書く.
今まで存在していたルールを上書きする.

/* rewite_rules_array
 * リライトルールの書き替え
 */
function my_category_rewrite_rules_array($rules) {
  // 順番の入れ替え
  $exp = '(.+?)/page/?([0-9]{1,})/?$';
  $add_rules[$exp] = $rules[$exp];
  unset($rules[$exp]);
  return $add_rules + $rules;
}
add_action('rewrite_rules_array', 'my_category_rewrite_rules_array', 10, 1);

同じ正規表現にマッチした場合に,固定ページに行かないでカテゴリのページ送りページにマッチさせるように書き替える.

functions.php でリライトルールを書き替えた場合,Flush Rules でリライトルールを更新しておく.
(「パーマリンク設定」で保存する操作と同じ)

 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.

 
   
contact
Pagetop