WordPressカスタムタクソノミーのアーカイブページ表示件数を変更する方法

スポンサーリンク

WordPressのアーカイブページの表示件数は、あらかじめ設定されています。

その設定は管理画面の「設定」→「表示設定」→「1ページに表示する最大投稿数」で行うことができます。

デフォルトではそこで設定した件数でいいんだけど、ところどころアーカイブページの表示件数を変えたい場合もあると思います。私がまさにそれで、部分的にアーカイブページの表示件数を変えたいと思いました。

今回表示件数を変えたいと思ったのは、カスタムタクソノミーのアーカイブページの表示件数です。アーカイブページの表示件数を変えたい時はpre_get_postsを使います。

pre_get_postsについてはconcrete5の菱川さんが書かれた記事が「WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】」が分かりやすかったです。

ソースコード

以下にソースコードを載せています。functions.phpに以下のコードを追加します。

function change_posts_per_page($query) {
    if ( is_admin() || ! $query->is_main_query() )
        return;
    //20件ずつ表示させたい
    if ( $query->is_tax( 'prefecture' ) ) {
        $query->set( 'posts_per_page', '20' );
    }
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

ポイントは「is_tax」です。is_taxで括弧内の名前のカスタムタクソノミーであるかどうかを見ていて、条件に当てはまっていれば、もともとカスタムタクソノミーのアーカイブページに10件ずつしか表示させて無かったのを20件ずつ表示するように変更しています。「prefecture」と書いてるのが、カスタムタクソノミー名です。これは自分の指定した名前に変更してくださいね。

is_taxについては「is_tax:WordPress私的マニュアル」が分かりやすかったです。

このコードで思った通りの動きができました。良かった〜。