解 説
WordPressの記事一覧を表示させるテンプレートは、年月別アーカイブ、カテゴリー別アーカイブ、記事の作成者別アーカイブなどいくつか種類があり、さらに、カスタム投稿タイプのアーカイブ、カスタムタクソノミー(カスタム投稿タイプのカテゴリー)のアーカイブもあります。今回は、それぞれのテンプレート別に、一覧表示させたい記事の数を、任意で設定する方法をご紹介します。
1functions.phpに以下のコードを設定すればOKです。必要に応じてコメントアウト(//)を解除してください
/*===================================================================
*テンプレート、カスタム投稿タイプ・カスタムタクソノミーごとの表示件数を設定
===================================================================*/
add_action('pre_get_posts','my_pre_get_posts');
function my_pre_get_posts( $query ) {
// if(is_admin() || ! $query -> is_main_query()) return;
// if($query -> is_front_page()) { //フロントページ
// $query -> set('posts_per_page',10); //10件
// }
// if($query->is_home()){ // トップページ
// $query->set( 'posts_per_page',20); //20件
// }
// if($query->is_month()){ // 月別アーカイブ
// $query->set('posts_per_page',-1); // -1ですべて表示
// }
// if($query->is_year()){ //年別アーカイブ
// $query->set('posts_per_page',10); //10件
// }
// if($query->is_author()){ // 作成者アーカイブ
// $query->set('posts_per_page',10); // 10件
// }
// if($query->is_category()){ // カテゴリーアーカイブ
// $query->set('posts_per_page',10); // 10件
// }
//shoplistというカスタム投稿タイプのアーカイブページ
// if($query -> is_post_type_archive('shoplist')){
// $query -> set('posts_per_page',200); //200件
// $query -> set('order','ASC'); //昇順
// $query -> set('orderby', 'date'); //日
// }
//newscatというタクソノミーの一覧ページ
// if ($query -> is_tax('newscat')) {
// $query -> set('posts_per_page', 10); //10件
// $query -> set('order', 'DESC'); //降順
// $query -> set('orderby', 'date'); //日
// }
}
2トップページには「投稿」を10件表示、カスタム投稿タイプ「shoplist」のアーカイブページには200件表示させる場合
/*===================================================================
*テンプレート、カスタム投稿タイプ・カスタムタクソノミーごとの表示件数を設定
===================================================================*/
add_action('pre_get_posts','my_pre_get_posts');
function my_pre_get_posts( $query ) {
// if(is_admin() || ! $query -> is_main_query()) return;
// if($query -> is_front_page()) { //フロントページ
// $query -> set('posts_per_page',10); //10件
// }
if($query->is_home()){ // トップページ
$query->set( 'posts_per_page',10); //10件
}
// if($query->is_month()){ // 月別アーカイブ
// $query->set('posts_per_page',-1); // -1ですべて表示
// }
// if($query->is_year()){ //年別アーカイブ
// $query->set('posts_per_page',10); //10件
// }
// if($query->is_author()){ // 作成者アーカイブ
// $query->set('posts_per_page',10); // 10件
// }
// if($query->is_category()){ // カテゴリーアーカイブ
// $query->set('posts_per_page',10); // 10件
// }
//shoplistというカスタム投稿タイプのアーカイブページ
if($query -> is_post_type_archive('shoplist')){
$query -> set('posts_per_page',200); //200件
$query -> set('order','ASC'); //昇順
$query -> set('orderby', 'date'); //日
}
//newscatというタクソノミーの一覧ページ
// if ($query -> is_tax('newscat')) {
// $query -> set('posts_per_page', 10); //10件
// $query -> set('order', 'DESC'); //降順
// $query -> set('orderby', 'date'); //日
// }
}

上記のように使いたいテンプレートの部分だけ、コメントアウトを解除してもらえばOKです。