web-dev-qa-db-fra.com

Afficher les produits d'une catégorie spécifique dans la page de magasin

Je sais que beaucoup de gens ont posé cette question mais je n’ai pas trouvé le moyen de le faire. Comment ajouter une meta_query simple (product_cat) avant l'exécution de la requête de la page de magasin.

Peut-être en utilisant un filtre?

Cordialement,

Adrien

5
aguidis

La page de la boutique est en fait une page d’archive pour les articles de type 'produit'. Son modèle est dans woocommerce/archive-product.php.

Vous devez utiliser l’action pre_get_posts pour pré-traiter la requête avant la boucle, conditionnel_tags pour reconnaître que vous vous trouvez dans la page d’archive du produit et une requête taxonomie pour filtrer les catégories de produits, qui appartenir à la taxonomie 'product_cat'.

Par exemple, ce qui suit (placé dans le functions.php de votre thème ou dans un plugin) affichera uniquement les produits de la catégorie de produit 'type-1':

 add_action('pre_get_posts','shop_filter_cat');

 function shop_filter_cat($query) {
    if (!is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query()) {
       $query->set('tax_query', array(
                    array ('taxonomy' => 'product_cat',
                                       'field' => 'slug',
                                        'terms' => 'type-1'
                                 )
                     )
       );   
    }
 }

Vous pouvez également exclure des catégories en utilisant 'operator' => NOT IN, et 'terms' peut être un tableau de slugs de catégories de produits.

Une bonne introduction à la personnalisation des requêtes est http://www.billerickson.net/customize-the-wordpress-query/

14
adelval

Cela a fonctionné pour moi:

[product_category category="YOUR CATEGORY" per_page="8" columns="3" orderby="date" order="desc"]
2
Chris