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

2013年12月12日 Wordpress naoyu

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で表示したいところです。

するとこうなります。

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

原因はパーマリンクだった

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

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

http://example.com/item/

になります。

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

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

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

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

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

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

というか、スラッグ名のかぶりは原則避けるべし。

これ覚えておきましょう。

404エラー解決方法

固定ページのスラッグをitemではないものにしましょう。

例えばitemsとか複数形にしてみるとか。

任意で付けたスラッグ名が被ってしまうと、思わぬ不具合が起きてしまうものですね。