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

回答編集履歴

2

追記

2016/10/16 01:35

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -42,4 +42,34 @@
42
42
  )
43
43
  );
44
44
  var_dump($posts);
45
+ ```
46
+
47
+ ----
48
+ **(追記) 複数の子タクソノミーがある場合**
49
+
50
+
51
+ ```php
52
+ $child_term_ids = array();
53
+ foreach ($child_taxs as $child_tax) :
54
+ $child_term_ids[] = $child_tax->term_id;
55
+ endforeach;
56
+
57
+ $posts = get_posts(
58
+ array(
59
+ 'tax_query' => array(
60
+ array(
61
+ 'include_children' => false,
62
+ 'taxonomy' => 'area',
63
+ 'field' => 'term_id',
64
+ 'terms' => $parent_tax->term_id,
65
+ ),
66
+ array(
67
+ 'taxonomy' => 'area',
68
+ 'field' => 'term_id',
69
+ 'terms' => $child_term_ids,
70
+ 'operator' => 'NOT IN'
71
+ )
72
+ )
73
+ )
74
+ );
45
75
  ```

1

追記

2016/10/16 01:35

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -15,4 +15,31 @@
15
15
  )
16
16
  );
17
17
  var_dump($posts);
18
+ ```
19
+
20
+ ----
21
+
22
+ **(追記)タクソノミーを除外する例**
23
+ 以下のようにtax_queryを追加してNOT INで、除外したいタクソノミーを指定すれば除外できます
24
+ 以下の例ではterm_idが6を除外しています。
25
+ ```php
26
+ $posts = get_posts(
27
+ array(
28
+ 'tax_query' => array(
29
+ array(
30
+ 'include_children' => false,
31
+ 'taxonomy' => 'area',
32
+ 'field' => 'term_id',
33
+ 'terms' => 4,
34
+ ),
35
+ array(
36
+ 'taxonomy' => 'area',
37
+ 'field' => 'term_id',
38
+ 'terms' => 6,
39
+ 'operator' => 'NOT IN'
40
+ )
41
+ )
42
+ )
43
+ );
44
+ var_dump($posts);
18
45
  ```