こんにちはズマペンです。
とある会社さんのホームページで、2ページ目以降が表示されない(ページ送りが動作しない)という現象に悩まされたときに、何とか解決できたので備忘録的に書き溜めていきます。
※なおWordPressのphpを編集する際は必ずバックアップを取るようにしましょう!

2ページ目以降が表示されない



 

■状況:2ページ目以降が表示されない!

・WordPressのブログを運用中。
・ブログ一覧ページから、2ページ目移行を見ようとしても表示されない。
・ページネーションのリンクURLがexample.com/blog/page/2/という形式。
・カスタム投稿が入れていて、パーマリンクの設定をカスタム構造に変更していた。


 

■仮説:怪しいと思ったところ

・そもそも2ページ目は存在している?
・もし2ページ目が存在しているなら、ページネーションのexample.com/blog/page/2/というリンクURLに問題あり?


 

■原因:なぜ!?WordPressのページネーションが動作しないのか

・2ページ目の一覧ページ自体は存在していた!
試しにパーマリンクの設定を基本に戻してみたところ、普通にページネーションが動作しました。
example.com/blog/page/2/ ⇒ example.com/?cat=1&paged=2 で見れました。

もしかしたら、本来はこれだけで解決するのかもしれないです。
自分の場合は、他のカスタム投稿のURLとの兼ね合いで、パーマリンクの設定の【基本】は使えない状況でした。

・原因はページネーションのリンクURLに問題あり
先ほどのパーマリンクの設定を再度カスタム構造に戻すと、ページネーションのURLはexample.com/blog/page/2/というリンクに戻りました。
なので、このページネーションのリンク先をexample.com/?cat=1&paged=2の形式にする必要がありました。

・またリダイレクトも解除しないといけない
また、パーマリンクの設定がカスタム構造の状態のままでexample.com/?cat=1&paged=2にアクセスしてもexample.com/blog/page/2/にリダイレクトされてしまいました。
これも解除しないといけませんでした。



 

■解決:なんとか回避した方法

ページネーションのURLを改変
まず、ページネーションのURLをexample.com/?cat=1&paged=2形式に変更します。
下記コードをページネーションを置きたい場所に記載。

※参考:https://teratail.com/questions/130276

ポイントは2つ。
①URLが/blog/の時は「format」で「../?cat=1&paged=%#%」を指定
②その他の場合は「format」で「&paged=%#%」を指定



 

ただし、これだけでは不十分!!
せっかくページネーションのリンクURLをexample.com/?cat=1&paged=2になるように変えても、
WordPressの機能で、自動リダイレクトがかかってしまうため、example.com/blog/page/2/に自動遷移してしまいます
=結局見れない状態ということが判明!

URLで特定の文字列(今回はpage)を含んだ場合はリダイレクトしない設定を追加して解決しました!
function.phpに下記コードを記載。
※参考:https://teratail.com/questions/130276



 

■まとめ

まずは、ページネーションのURLを2ページ目が表示されるURLに変更。
次に、リダイレクトされないようにfunction.phpに設定。

理想は、example.com/blog/page/2/という形式のまま、2ページ目が表示されると良かったのですが、
力不足というか知識不足で、今回は上記の回避策で落ち着きました。



 

この記事を書いた人



上級ウェブ解析士 水間 祐平

上級ウェブ解析士 水間 祐平
出身:千葉県千葉市
資格:上級ウェブ解析士・産業カウンセラー
趣味:映画鑑賞、スポーツ観戦、草野球

中小企業を専門に合計400サイト以上のホームページの運用・分析を担当。現在も常時100サイト以上のアクセス解析を行い、数値データから導き出す改善提案で、多くの成功事例を生み出している。また、企業のWeb・広報担当者向けにアクセス解析のセミナー研修を行っている。