WP-PageNaviの2ページ目以降で起こる404エラーの回避方法

公開日: 2013年12月12日 最終更新日: 2018年4月10日

WP-PageNavi とは

WordPressユーザーにはお馴染み、WP-PageNaviはページネーションを簡単に追加できるプラグインです。

WP-PageNavi(wordpress.orgのページを見る)

ページネーションを入れたい箇所に、以下のコードを入れるだけで実装完了。超簡単です。

WP-PageNaviでよくハマること

時々、WP-PageNaviのページネーションが表示されない問題が起きます。
これの原因のひとつに、「WP_Queryでクエリを変更していた」という事がよくあります。

例えば、固定ページでカスタム投稿のブログ記事を一覧表示したいとします。
その場合、new WP_Query()で、固定ページからカスタム投稿のクエリに変更します。

一般的なWP_Queryでクエリを変更した処理です。

そもそも「WP-PageNaviが表示されない」トラブルの解決方法

wp_pagenavi();のコードを以下に差し替えてみてください。

array('query' => $the_query)の部分で、クエリを正しく引っ張ってきています。

こちらのサイトを参考にさせていただきました。

WP_Queryを使用してWP-PageNaviでページナビを表示

正常にWP-PageNaviが表示され、2ページ目以降のリンクが生成されたはずです。
しかし、本当に恐ろしい問題はここからでした。次からが本題となります。

2ページ目以降「404 ページがありません」と出る

例えば、カスタム投稿「item」を追加したとします。
そしてカスタム投稿「item」記事を、固定ページに表示させたいとします。
心情的には、固定ページのスラッグを「item」にし、http://example.com/item/というURLで表示したいところです。

するとURLがこうなります。

WP-PageNavi 404 ページがありません と出るイメージ

これ、ダメなんですよ。

404エラーの原因はパーマリンクだった

パーマリンク設定%postname%にしていると、この現象が起こります。

カスタム投稿のアーカイブページはデフォルトで、

http://example.com/item/

になります。

ところが、固定ページのitemで上書きしてしまう為、ページネーションの2ページ目

http://example.com/item/page/2/

というURLでは、改ページされた固定ページとしてデータを参照しようとします

固定ページの改ページとは、本文にテキストモードで次のタグを入れるとページを分割することができる機能です。

文章量が長くなるような、ニュースサイトとかでよく見られます。

固定ページのスラッグ名と、カスタム投稿のスラッグ名は、同じ文字列で設定すると、割りと不具合が起きる!

というか、スラッグ名のかぶりは原則避けるべし。
これ覚えておきましょう。

404エラーの解決方法まとめ

  • 固定ページなどでクエリ変更する場合、URLが被らないよう注意する
  • パーマリンクを一度デフォルトに戻してみる

スラッグ名が被ってしまうと思わぬ不具合が起きてしまうもの。
Wordpressのテーマカスタマイズ初心者さんにありがちなミスのひとつです。

僕も実際にハマってしまったトラブルだったので、記事にまとめました。

誰かのお役に立てたら幸いです。

 

WordPressの基本的なことは、手元に本も置いておくと迷った時にすぐ見返せるからオススメですよ。