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私的マニュアル」が分かりやすかったです。
このコードで思った通りの動きができました。良かった〜。