カスタム投稿の投稿一覧ページで、ページネーションが404表示になるときの対策

この記事で解決できるお悩み
  • カスタム投稿の投稿一覧ページでページネーションがうまく動かない
  • ページネーションは表示されるけど2ページ目以降が404ページになる
伊藤

フリーランスのweb制作エンジニアとして、現在1社と業務提携中です。上記の悩みを解決できる記事を書きました!

この記事で紹介している方法を使うことでカスタム投稿の投稿一覧のページネーションで悩むことはなくなります。

私はこの記事の方法を使い当サイトの制作実績ページのページャーを作成しました。

この記事を読めばページネーションを使いこなせること間違いなしです!

この記事で解説する内容
  1. 具体的な不具合の紹介
  2. 不具合の原因
  3. 2つの解決方法
この記事の著者

web制作エンジニア

伊藤 義尚

2021年よりweb制作の学習を開始し、現在1社と業務提携中

自身が学んだこと、ためになったことを発信しています

もくじ

私が遭遇した不具合

私が遭遇した不具合は当サイトの制作実績一覧ページ(カスタム投稿で作成)の作成時に発生しました。

一覧ページの下部にページネーションは表示されるものの、2ページ目以降をクリックしても全て404ページ

原因

色々調べた結果、404ページとなる原因はこちらでした。

  • カスタム投稿タイプの一覧ページで、
  • WP_Queryによる定義を行っており、
  • posts_per_pageで1ページの記事表示数を指定していて、
  • 管理画面の「1ページに表示する最大投稿数」で設定した数値より、3の数値のほうが小さいとき

ちょうど私が作成した状態がまさにこれでした。

このとき1ページに表示する最大投稿数は「12」、posts_per_pageで指示した値は「9」でした。

この値に設定した理由は「ブログ」と「制作実績」があり、それぞれ別の値を設定したかったからであり、

「ブログ」の最大投稿数は管理画面から管理できるようにしたい、と考えているからです。

解決法

では具体的な解決法をお伝えします。

【その1】functions.phpに1ページに表示する記事数を記載する

一番おすすめの方法です。

functions.phpに以下を記載します。

//特定のカスタム投稿の記事一覧数を指定する
add_filter('parse_query', 'custom_per_page');
function custom_per_page($query)
{
    // 管理画面とsingleとメインループじゃない部分は除く
    if (is_admin() || is_singular() || !is_main_query()) { 
        return false;
    }
    if (get_query_var('post_type') == 'work') { // 対象のスラッグを記載
        $query->set('posts_per_page', '12'); // 1ページに12記事
    }
}

複数のカスタム投稿がある場合、対象スラッグ毎に追記して下さい。

//特定のカスタム投稿の記事一覧数を指定する
add_filter('parse_query', 'custom_per_page');
function custom_per_page($query)
{
    // 管理画面とsingleとメインループじゃない部分は除く
    if (is_admin() || is_singular() || !is_main_query()) { 
        return false;
    }
    if (get_query_var('post_type') == 'work') { // 対象のスラッグを記載
        $query->set('posts_per_page', '12'); // 1ページに12記事
    }
    if (get_query_var('post_type') == 'model') { // 追記
        $query->set('posts_per_page', '12'); 
    }
}

【その2】1ページに表示する最大投稿数を”1″にする

管理画面の「1ページに表示する最大投稿数」を1にする方法もあります。

こちらで設定すればカスタム投稿のページネーションはうまく機能しますが、投稿一覧では1記事のみの表示となってしまいます。

これを防ぐために、通常の投稿もサブループで組む必要が発生してきます。

「カスタム投稿しか使わないよ」といった場合には、この方法でも対処できると思います。

まとめ

今回はカスタム投稿の一覧ページにおけるページネーションの不具合の解決方法について解説しました!

通常の投稿だけだと遭遇しない不具合なので、原因を把握するまで時間が掛かりました。

カスタム投稿の投稿一覧を作る際はご注意下さい!

もくじ