Au tout début, la première chose dont nous aurons besoin est un bloc de code de départ que nous pouvons modifier selon nos besoins:
<?php $params = array('posts_per_page' => 5); // (1) $wc_query = new WP_Query($params); // (2) if ($wc_query->have_posts()) : // (3) while ($wc_query->have_posts()) : // (4) $wc_query->the_post(); // (4.1) the_title(); // (4.2) endwhile; wp_reset_postdata(); // (5) else: ?> <p> <?php _e( 'No Products' ); // (6) ?> </p> <?php endif; ?>
Le code ci-dessus extrait les titres des cinq articles les plus récents de notre base de données WordPress en utilisant le processus suivant:
Tout ce que nous devons faire est de changer le tableau des paramètres de requête pour inclure le paramètre post_type et lui dire de récupérer les produits :
$params = array( 'posts_per_page' => 5, 'post_type' => 'product' );
Dans WooCommerce, un champ sale_price est chargé de définir le prix spécial réduit; lorsque le produit n'est plus en promotion, ce champ est vide.
$params = array( 'posts_per_page' => 5, 'post_type' => 'product', 'meta_key' => '_sale_price', 'meta_value' => '0', 'meta_compare' => '>=' );
Le code de la dernière section s'occupe d'afficher les produits en promotion, mais qu'en est-il des variantes d'un seul produit? Après tout, si une variante est en vente, nous voudrons probablement aussi que le reste des variantes soit en vente! La raison pour laquelle le code de la dernière section n'affiche pas les variantes en standard est que WooCommerce stocke chaque variante de produit en tant que publication distincte et en tant que publication d'un autre type. Pour contourner ce problème, nous devons apporter une autre petite modification à notre tableau de paramètres:
$params = array( 'posts_per_page' => 5, 'post_type' => array('product', 'product_variation'), 'meta_key' => '_sale_price', 'meta_value' => 0, 'meta_compare' => '>=' 'meta_type' => 'NUMERIC' );
Vos clients ne seront pas très satisfaits si vous essayez de leur vendre un produit sur votre page d'accueil que vous n'avez pas en stock, c'est donc une bonne idée d'inclure une telle vérification dans votre code. La situation de stockage est gérée par le champ _stock_status, qui prend deux valeurs: instock et outofstock. Ainsi, pour afficher les produits dont le prix est inférieur à 5 et qui sont en stock, nous devons utiliser les paramètres suivants :
$params = array( 'posts_per_page' => 5, 'post_type' => array('product', 'product_variation'), 'meta_query' => array( array( 'key' => '_price', 'value' => 5, 'compare' => '<', 'type' => 'NUMERIC' ), array( 'key' => '_stock_status', 'value' => 'instock' ) ) );
Source : https://www.gavick.com/blog/wp_query-woocommerce-products
Autres informations en anlgais : https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
Sorry. No data so far.