WordPressのページネーションがうまくいかない原因は?

WordPressのページネーションがうまくいかない原因は?

こんにちは、ちゃんけいです。

今回はワードプレスのテーマ制作をしていると必ずぶち当たる、ページネーション!(ページャー? )のうまくいかない原因と解決策を簡単に説明していきたいと思います。

前提として、プラグインなどは使わずにページネーションを自作した場合の状況です。

ページネーションのプラグインは何かとバグっても原因がわかりずらいし、デザインを再現しずらいので基本的には使わないようにしています。

個人的にぶちあたった分しか書けないので、もっとこれもあるよ!という方は是非教えてください!

固定ページで起こること

固定ページでページネーションて使う?と思った方もいると思います。

トップページとして設定するfront-page.phpや、その時に一覧ページとして使うhome.phpは固定ページです。なのでほぼ必ず使うのではないでしょうか?

そんなときにページャーを動かしていると404エラーがでることがしばしば、、、、

実は固定ページでは、「paged」が無視される仕様なので仕方ないのですが、、

  • paged:今何ページ目かの情報

これが情報としてループに渡されていないと、残念ながらページネーションは動作しません。

なので下のコード( codepenで無理やり入れた )をfunctions.phpに追加します。これで解決!

See the Pen pagedを無視しない by Chankei (@Chankei) on CodePen.0

 

アーカイブページで起こること

先ほどの固定ページの仕様は、コードを少し追加するだけで問題ありませんでした。
嬉しい。

カテゴリーや、タグ一覧ページ、カスタム投稿のタクソノミー一覧ページとか色々なページがアーカイブページです。

アーカイブページでは、サブクエリではなくメインクエリを使うので「new WP_Query」を使わずに「pre_get_posts」を使います。

なんとこれだけで解決。。。。

メインクエリ?サブクエリ?という方は
もっとWordPressの勉強をしてください( ´・ヮ・`)
ループの使い方が大切になってきますよ。

まとめ

固定ページでは1つコードを追加すると解決、アーカイブページではメインクエリを使うと解決。

自分自身も理解の足りない部分があるのでもっと勉強しなくては!

すごく簡単に書きましたが、初めてこの問題にぶち当たった時はいったい何が原因かわからず何時間もググったり本を読んだりしてなんとか納期に間に合い解決にいたりました。。。

みなさんも是非WordPressについて勉強してみてください。

一般的なWebサイトのオリジナルテンプレートでしたらそんなに難しい知識は入りません。しっかり時間をかけて1つずつ問題を解決すればできます。

WordPressの学習難易度をさげたいのでしたら、HTMLとCSSをしっかり理解する事が近道ですよ!( しっかりの基準に関してはまた今度 )

 

それでは今回はこのへんで、ちゃんけいでした。