解 説
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です。