teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足を受けて回答を追記

2017/12/07 01:21

投稿

raidomaru
raidomaru

スコア106

answer CHANGED
@@ -1,3 +1,28 @@
1
1
  [テンプレートタグ/previous post link](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/previous_post_link)
2
2
 
3
- $in_same_termをtrue、$taxonomyで指定したいサブカテゴリーを指定するといかがでしょうか。
3
+ $in_same_termをtrue、$taxonomyで指定したいサブカテゴリーを指定するといかがでしょうか。
4
+
5
+ 【補足を受けての回答】
6
+ 全体ということなのでcategory.phpと仮定して回答します。
7
+
8
+ functions.phpにpre_get_postsを追記してループを制御していらないカテゴリーを外すことができます。
9
+ その他の書き方も参考サイトをみればできるのではないでしょうか。
10
+ [[WordPress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ](http://emiac-works.com/coding/pre-get-posts-code-snipet/)
11
+
12
+ ```php
13
+ function change_posts_per_page($query) {
14
+ /* 管理画面,メインクエリに干渉しないために必須 */
15
+ if( is_admin() || ! $query->is_main_query() ){
16
+ return;
17
+ }
18
+
19
+ /* カテゴリーページの表示件数を5件にし、カテゴリID2を除外する */
20
+ if ( $query->is_category() ) {
21
+ $query->set( 'posts_per_page', '5' );
22
+ $query->set( 'cat','-2' );
23
+ return;
24
+ }
25
+
26
+ }
27
+ add_action( 'pre_get_posts', 'change_posts_per_page' );
28
+ ```