一覧ページの表示件数を、ページによって個別に設定する
WordPressで一覧表示する件数は、
管理画面で変更できますが、
設定は一つしか出来ません。
例えば、トップページに表示するときには10件、
アーカイブページで表示するときには30件など
のように、分けることはできません。
そんなときは、
functions.phpで以下のコードを記述すると
実現できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php //表示件数制御 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',9); // 9件 } //newsというカスタム投稿タイプのアーカイブページ if($query -> is_post_type_archive('news')){ $query -> set('posts_per_page',10); //10件 $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'); //日 } } ?> |