はじめに
固定ページで読み込んだカスタム投稿のページネーションが2ページ目以降で404になってしまった
functions.phpでカスタム投稿を作って、アーカイブページを使わず、固定ページでクエリを生成して表示することもあるかと思います。その場合、固定ページで読み込んだカスタム投稿のページネーションが2ページ目以降で404になってしまうことがありますので、記事として書かせていただきます。
例えば、カスタム投稿のpost_typeをblogとして作成しアーカイブページをfalseと設定しアーカイブページを生成しない様にします。また、固定ページにもblogをいうスラッグでページを作成したとします。
この時、post_type blogを固定ページでクエリを生成して表示させた場合、同じpost_typeの名前と固定ページのスラッグが同じ名前になっているので、ページを2ページに移動した時に、404になってしまいます。
404の回避方法
上述の404を回避する方法の1つは、固定ページのslugをpost_typeと異なる名前にすることです。
例えば上述の例では、固定ページのslugをblogとしていますので、slugをblogsにすることで回避できます。
スタンダードな方法は、固定ページでpost_type blogのクエリを呼び出すのをやめて、has_archiveのステータスをtrueにすることです。この場合、アーカイブページとしてblogが生成されますので、こちらを使うのがスタンダートかと思います。
この時、例えばパンくずなどでページの名前が取得の方法でお困りになる方がいらっしゃるかと思います。
この場合は、ループの外で、post_typeのlabelを取得できる方法をご紹介していますので、合わせて見ていただければと思います。
固定ページでカスタム投稿のクエリを生成して、ページネーションが2ページ目以降 404になっている方の1人でもお力に慣れれば幸いです。