J'aimerais créer une requête pour renvoyer des publications en fonction de la présence conditionnelle de certaines balises. La pseudo-requête est la suivante: return posts with "((tagA OR tagB) AND (tagX OR tagY))"
. Mais je rencontre des problèmes pour rédiger une telle requête dans WP_Query et j'aimerais des suggestions.
De https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters Je sais que cela affichera les publications qui comportent l'une de ces balises:$query = new WP_Query( array('tag'=>'tagA,tagB'));
et ceci qui a toutes ces balises:$query = new WP_Query( array('tag'=>'tagX+tagY'));
mais j'ai deux OR requêtes jointes avec un AND et. J'ai essayé ceci:$query = new WP_Query( array('tag'=>'tagA,tagB+tagX,tagY'));
mais cela n'a pas fonctionné.
Puis-je utiliser WP_Query pour effectuer une telle recherche? Toutes les suggestions appréciées.
UPDATE
"Gary D" m'a indiqué la bonne direction et "Rarst" oui vous pouvez l'utiliser sur la même taxonomie. Cette requête ci-dessous donne le résultat attendu dans WP4.5.2 et j'utilise des balises standard sur des publications standard:
$args = array( /* Return posts with ((tagA OR tagB) AND (tagX or tagY)) */ 'meta_key' => 'SortField', 'order' => 'DESC', 'orderby' => 'meta_value', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'post_tag', 'field'=>'slug', 'terms'=> array('tagA','tagB'), 'operator'=>'IN' ), array( 'taxonomy' => 'post_tag', 'field'=>'slug', 'terms'=> array('tagX','tagY'), 'operator'=>'IN' ), ) ); $query = new WP_Query($args); if ( $query->have_posts() ) : while ($query->have_posts() ) : $query->the_post();
Essayez quelque chose comme ceci: (cela provient de la même page que vous avez liée, faites simplement défiler un peu plus).
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND', // searches for posts meeting both conditions
array(
'taxonomy' => 'midgets',
'field' => 'slug',
'terms' => array( 'tagA,TagB' ), // searches for EITHER tag
),
array(
'taxonomy' => 'donkeys',
'field' => 'slug',
'terms' => array( 'tagX,TagY' ), // searches for EITHER tag
),
),
);
$query = new WP_Query( $args );