web-dev-qa-db-ja.com

Wordpressのtax_query "and"演算子が期待どおりに機能しない

image というカスタム投稿タイプがあり、 image_tag というカスタム分類法を使用しています(カテゴリのように階層的です)。これが使用されるかもしれないタグのいくつかの例です:

Structure (id: 25)
- House (id: 56)
- Skyscraper
Nature
- Animal
- Plant (id: 41)

そのため、 "and"演算子と組み合わせて複数のタグを選択して、画像をドリルダウンしたいと思います。たとえば、 plant sと house sの付いたすべての写真を検索します。

$query_args = array(
  'post_type' => 'image',
  'tax_query' => array(
    array(
      'taxonomy' => 'image_tag',
      'terms' => array(41, 56),    // IDs of "plant" and "house"
      'operator' => 'and',
    ),
  ),
);

それはうまくいきます、問題は私が親の用語を含めようとするときに始まります、例えば:

$query_args = array(
  'post_type' => 'image',
  'tax_query' => array(
    array(
      'taxonomy' => 'image_tag',
      'terms' => array(25, 41),    // IDs of "structure" and "plant"
      'operator' => 'and',
    ),
  ),
);

それなら結果が出ません。私は "and"演算子を使っているので、Wordpressには "Structure"という用語の子が含まれていないと思います。どのようにしてこれを機能させることができるか、またはこれを達成するための他の解決策を知っている人はいますか?

6
dkeeling

テストされていませんが、これを試してみる

'tax_query' => array(
   'relation' => 'AND',
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => 25,
      'operator' => 'IN',
    ),
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => 41,
      'operator' => 'IN',
    )
  ),

OR

'tax_query' => array(
   'relation' => 'AND',
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => array(25,41),
      'operator' => 'IN',
    ),
  ),
7
Jeff