web-dev-qa-db-fra.com

Comment écrire une requête en taxe qui correspond à tous les termes d'un tableau?

Je crée un filtre de produit et je ne parviens pas à trouver le moyen de faire fonctionner cette requête correctement. Je dois pouvoir alimenter cette requête avec un ensemble de termes (attributs de produit woocommerce), et j'en ai besoin pour renvoyer les produits qui ont tous des termes fournis.

Jusqu'à présent, il semble retourner les produits qui ont l'un des termes. Toutes les suggestions seraient grandement appréciées.

Voici les arguments que j'ai jusqu'ici:

 $selectedOptions = array('test-attribute', 'test3');

 $args=array(
  'post_type' => 'product',
  'post_status' => 'publish',
  'posts_per_page' => -1,
  'tax_query'           => array(
        array(
            'taxonomy'      => 'pa_filterable-attribute',
            'terms'         => $selectedOptions,
            'field'         => 'slug',
            'operator'      => 'IN'
        )
    )
);

Et voici ma boucle si ça compte:

$my_query = null;   
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { 
    woocommerce_product_loop_start();
    woocommerce_product_subcategories();
     while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <?php wc_get_template_part( 'content', 'product' ); ?>
  <?php endwhile; 
  woocommerce_product_loop_end();
  }
  wp_reset_query();
1
TripsLeft

Je pense que changer votre opérateur en "AND" comme ci-dessous fonctionnera:

$selectedOptions = array('test-attribute', 'test3');

$args=array(
  'post_type' => 'product',
  'post_status' => 'publish',
  'posts_per_page' => -1,
  'tax_query'           => array(
        array(
            'taxonomy'      => 'pa_filterable-attribute',
            'terms'         => $selectedOptions,
            'field'         => 'slug',
            'operator'      => 'AND'
        )
    )
);
1
Fencer04