J'essaie de filtrer les publications en fonction de plusieurs taxonomies. Mon code ci-dessous fonctionne très bien, mais c'est une chose que je n'arrive pas à comprendre. Lorsque je filtre les articles, il semble qu'ils ne montrent que les articles qui s'appliquent à tous les termes de ma taxonomie.
Donc, pour illustrer mon problème: disons que j'ai un post et que ce post est "Montana". Et le Montana a une taxonomie "régions" de "région1". Il a également une "population" de "pop1". Et nous avons un autre post appelé "Idaho" et est dans 'region2' et est dans 'pop1' et, en outre, il est aussi dans 'pop2'.
Alors je lance ma requête:
$myquery['tax_query'] = array(
'relation' => 'OR',
array(
'taxonomy' => 'regions',
'terms' => array(region1),
'field' => 'slug',
'operator' => 'IN',
),
array(
'taxonomy' => 'population',
'terms' => array(pop1),
'field' => 'slug',
'operator' => 'IN',
)
);
query_posts($myquery);
Tout fonctionne à merveille ... Idaho et Montana Tous deux se présentent. Donc, je lance une autre requête, cette fois filtrer par un autre terme de population "pop2" avec "pop1".
$myquery['tax_query'] = array(
'relation' => 'OR',
array(
'taxonomy' => 'regions',
'terms' => array(region1),
'field' => 'slug',
'operator' => 'IN',
),
array(
'taxonomy' => 'population',
'terms' => array(pop1,pop2),
'field' => 'slug',
'operator' => 'IN',
)
);
query_posts($myquery);
Maintenant, Idaho et Montana devraient tous deux se présenter, non? ... mais ils ne le font pas. Seul Montana apparaît car il contient 'region1', mais Idaho n'apparaît pas car il ne fait pas partie de region1 et ne contient ni DEUX 'pop1' ni de 'pop2'.
Donc ma question:
Est-il possible de faire fonctionner l'opérateur de taxonomie lorsqu'au moins un des termes correspond au lieu que tous soient vrais?
Je ne suis pas sûr qu'il y ait un moyen de le faire utiliser "OU" au lieu de "ET". Alternativement, vous pouvez faire:
$myquery['tax_query'] = array(
'relation' => 'OR',
array(
'taxonomy' => 'regions',
'terms' => array('region1'),
'field' => 'slug',
'operator' => 'IN'
),
array(
'taxonomy' => 'population',
'terms' => array('pop1'),
'field' => 'slug',
'operator' => 'IN'
),
array(
'taxonomy' => 'population',
'terms' => array('pop2'),
'field' => 'slug',
'operator' => 'IN'
)
);
query_posts($myquery);