ページネーションがおかしい!次のページに行かない原因と解決方法|WP-Pagenavi・表示設定を見直す

今まで何度もWordPressのテンプレートをカスタマイズし、問題なくページネーションは機能していたのですが、なぜか今回のカスタマイズでは次のページに行かない。。2ページ目を延々ループして抜け出せない。。とのことで色々調べてると『WP-Pagenavi』が原因、ということに辿り着い、延々ループからは抜け出せたのですが、今度は404エラーに。。

とりあえずこの404の原因もわかったのですが、今度同じような症状が出た時、ここに辿り着くのにまた膨大な時間を失うわけにはいかない!ので覚書!

ページネーションがおかしい!次のページに行かない!404エラーになる!

そんなわけで、今回は『WP-Pagenavi』で次のページに行かない時の対処法(解決方法)です。

延々ループからの脱出方法

まずは延々ループからの脱出方法です。記述を少し変更(付足)します。

例えばカテゴリーIDが1と2のカテゴリー10ページ表示する記述を以下のように書いていたとします。
(カテゴリーIDは判別できているのを前提に進めます。)

<?php query_posts('cat=1,2&posts_per_page=10'); ?>

これの最後に、

paged=’.$paged 

をつけて、

<?php query_posts('cat=1,2&posts_per_page=10&paged=’.$paged ); ?>

とすると、延々ループから脱出し、2ページ目以降も表示されるように!なってくれました。

これだけでいいの?って感じですけど、ここに辿り着くまでだい〜〜〜ぶ時間がかかってしまいました。ふぅ。。

カテゴリーを指定する記述

ちなみに、
カテゴリーを指定する場合は『cat=2』のようにカテゴリーIDを指定しますが、
カテゴリーを除外する場合は『cat=-2』のようにすればOKです。

複数指定する場合は、例えば2のカテゴリーを除外し、3,4のカテゴリーを指定する場合は『cat=-2,3,4』となり、記述は

<?php query_posts('cat=-2,3,4&paged='.$paged); ?>

となります。

表示順序を指定する記述

ランダムに表示させる場合は『orderby=rand』を記述します。

<?php query_posts('orderby=rand&paged='.$paged); ?>

昇順に表示させる場合は『orderby=ASC』
降順に表示させる場合は『orderby=DESC』

表示数を指定する記述

ページ数を12に指定する場合は『posts_per_page=12』なので、

<?php query_posts('posts_per_page=12&paged='.$paged); ?>

となります。
これは後で書きますが、管理画面できちんと指定すれば特にいらないかも。

カテゴリー・表示順序・表示数を全て指定する記述

カテゴリー・表示順序・表示数、これら全てを同時に指定すると、

<?php query_posts('cat=-2,3,4&orderby=rand&posts_per_page=12&paged='.$paged); ?>

となります。

404エラーの解決方法

ページ数の設定は、実は『WordPress』の管理画面と『WP-Pagenavi』の管理画面の両方にあるんですね。

ページネーションがおかしい!設定箇所が2箇所

さらに上記のようにPHPの記述も加えると、3つでページ数を指定することができてしまいます。

そんな訳で、ここに差異があると404エラーに陥ってしまいます。
ま、普通に考えればわかることなのですが、もうハマってしまいました。数時間以上。。はぁ。。

エラーになる例

色々試してみると、
WPの表示設定 > WP-Pagenaviの表示設定
このような数値になっているとエラーが起きるようですね。

投稿記事が20あるとして、WPの表示設定が10、WP-Pagenaviが2の場合、
WPでは10ページを1ページとして出力しているので、2ページ分しかないのに、
WP-Pagenaviでは2ページを1ページとして出力しているので、10ページ分出力させようとするため、
3ページ目以降はWP-Pagenaviでは表示させたいけど、WPではそんなに記事はない!と判断するので、404エラーが起きる、というわけなんですね。

文字にするとわかりにくい。。でもそういうことなんですね。納得。

そんなわけで、表示数の設定の差異をチェックして、差異がある場合は統一してください。これで404エラーは解消するはずです。

おまけ:表示数を0にすると…

試しに表示数を0にしてみたところ…

ページネーションがおかしい!表示数を0にすると…

こんな感じにわけのわからない表示になってしまいました。。参考まで。

トラブル・エラー回避・解決方法

そんなわけで、トラブル・エラー回避・解決方法としては、

延々ループの場合は、

  • 『paged=’.$paged』を記述に付け足す

404エラーで3ページ目以降が表示されない場合は、

  • 『WP』と『WP-Pagenavi』の表示設定を同じにする。(PHPで記述はしない)
  • 『WP』と『WP-Pagenavi』の表示設定を1にして、PHPの記述で管理する。

この2通りなのかな。と思います。
こちらに関しては面倒臭いですけど『WP・WP-Pagenavi』ともに表示設定をきちんとすれば、問題は起きないのかな。ってとこですね。

同じように『次のページに行きたいのに、延々2ページ目のループになって次のページに行かない!』という方や、『404エラーで3ページ目以降が表示されない!!』という方は、これを試してみてください!



関連記事

MySQL移行ツールにて移行

MySQL 5.5→5.7への移行手順:XSERVER(エックスサーバー)にて


数年ぶりに新規でワードプレスを使用したサイトを作ったのですが、MySQLのバージョン、5.7しか新規では追加できないよう…

記事を読む▷


FACEBOOK デバッガー & TWITTER Card validator

【2021】FacebookやTwitter CardのOGPの設定をする!チェックツールURLも!プラグインなし


今まで何度も『OGP』の設定に関する記事は書いてきたのですが、新規サイト立ち上げで参考にしようと見てみたら、Facebo…

記事を読む▷


これは便利!!WordPressの投稿内に、管理者やログインユーザーにしか見れないメモを残す方法


よく投稿を途中まで作って、なかなか仕上げれずに長い期間あいてしまうと『これなんのサイト参考にしてたんやっけ?』とか『え〜…

記事を読む▷


onMouseOver、onMouseOutで、簡単にテキストを切り替える!


前回のonMouseOver,onMouseOutで簡単に画像を切り替える!の続き、応用編です。 実はこちらサイト…

記事を読む▷


お名前.com から脱出する!:ドメインの移管方法


『お名前.com』でドメイン取得してからは、『Whois情報公開代行』の件(詳細はこちら)で大変な思いをしたのですが、そ…

記事を読む▷


Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

PAGE TOP