web-dev-qa-db-fra.com

WooCommerce obtenir des produits par requête d'attribut

J'ai un produit avec des couleurs d'attribut. Les valeurs d'attribut sont rouge, bleu et vert. J'essaie de créer une recherche personnalisée, mais je ne parviens pas à obtenir la requête pour extraire un produit.

$args =  array(
    'post_type'      => array('product'),
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'meta_query'     => array( 
        array(
            'key' => '_visibility',
            'value' => array('catalog', 'visible'),
            'compare' => 'IN',  
        ) 
    ),
    'tax_query'      => array( 
        array(
            'taxonomy'        => 'product',
            'field'           => 'slug',
            'terms'           =>  array('blue', 'red', 'green'),
            'operator'        => 'IN',
        ),
    )
);

$products = new WP_Query( $args );

Où est-ce que je me suis trompé?

8
user3098629

La taxonomie correcte pour la couleur d'attribut du produit est 'pa_color', donc la requête de travail correcte est:

// The query
$products = new WP_Query( array(
   'post_type'      => array('product'),
   'post_status'    => 'publish',
   'posts_per_page' => -1,
   'meta_query'     => array( array(
        'key' => '_visibility',
        'value' => array('catalog', 'visible'),
        'compare' => 'IN',
    ) ),
   'tax_query'      => array( array(
        'taxonomy'        => 'pa_color',
        'field'           => 'slug',
        'terms'           =>  array('blue', 'red', 'green'),
        'operator'        => 'IN',
    ) )
) );

// The Loop
if ( $products->have_posts() ): while ( $products->have_posts() ):
    $products->the_post();
    $product_ids[] = $products->post->ID;
endwhile;
    wp_reset_postdata();
endif;

// TEST: Output the Products IDs
print_r($product_ids);

Ce code est testé et fonctionne. Vous obtiendrez tous les produits qui ont l'attribut Couleur avec les valeurs (termes) "bleu", "rouge" et "vert"…

Depuis WooCommerce 3, la visibilité des produits est gérée par une taxonomie personnalisée product_visibility. Vous pouvez voir les fils associés suivants:

10
LoicTheAztec