Utiliser WP_Query pour afficher les produits Woo

Mis à jour le lundi 20 juillet 2020
Temps approximatif de lecture : 4 minutes

La structure du code de base

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:

  1. Un tableau de paramètres avec lequel WP_Query fonctionne est créé; pour commencer, ce ne sont que les publications de base, mais en ajoutant plus de détails à ces paramètres, nous pouvons obtenir des résultats différents pour nos requêtes.
  2. WP_Query est utilisé pour interroger les paramètres créés dans la première ligne.
  3. La requête est vérifiée pour voir si elle a renvoyé des résultats.
  4. S'il y a des résultats, nous les répétons:
    4.1 Tout d'abord, définissez la variable globale $ post, qui garantit le fonctionnement de la fonction suivante.
    4.2 Deuxièmement, définir la variable the_title (), qui est responsable de l'affichage du titre du message.
  5. Ensuite, lorsque les articles sont affichés, nous retournons la variable $ post à son état d'origine avec la fonction wp_reset_postdata.
  6. Dans le cas où la vérification à l'étape 3 constate qu'il n'y a pas de publications à afficher, au lieu d'itérer sur des résultats inexistants, nous affichons simplement une invite appropriée.

Tirer des produits WooCommerce au lieu de messages WordPress

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'
);

Affichage des produits WooCommerce en promotion

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' => '>='
);

Affichage de variantes de produits promotionnels

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'
);

Displaying available products only

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

Tutoriel précédent
«

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Copyright © 2019 - 2020 Bulgaweb
 | 
Développé par BulgaWeb
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram