web-dev-qa-db-fra.com

Wordpress tax_query "et" opérateur ne fonctionne pas comme souhaité

J'ai un type de message personnalisé de image avec une taxonomie personnalisée appelée image_tag (c'est hiérarchique comme les catégories). Voici quelques exemples de balises pouvant être utilisées:

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

Je souhaite donc parcourir les images en sélectionnant plusieurs balises en association avec l'opérateur "et". Par exemple, recherche de toutes les photos avec plant s et 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',
    ),
  ),
);

Cela fonctionne bien, le problème commence lorsque j'essaie d'inclure les termes parents, par exemple:

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

Ensuite, je n'obtiens aucun résultat. J'imagine que, parce que j'utilise l'opérateur "et", Wordpress n'inclut pas les enfants du terme "Structure". Quelqu'un at-il une idée de la façon dont je peux obtenir que cela fonctionne, ou une autre solution pour y parvenir?

6
dkeeling

pas testé mais donnez un coup de feu

'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