WooCommerce – afficher les produits par catégorie sur la page boutique

Par défaut WooCommerce ne permet pas d’afficher sur la page boutique les produits par catégories. Vous pouvez afficher les catégories, les produits ou les catégories et les produits mais pas les catégories et leurs produits.

Pour se faire, il suffit de paramétrer la boutique et d’utiliser un hook dans votre functions.php.

Paramétrage de la boutique :

  • depuis le BO, allez dans Apparence > Personnaliser
  • depuis l’interface de personnalisation, allez dans Woocommmerce > Catalogue de produits
  • sélectionnez « afficher les catégories » pour le réglage « Affichage de la page boutique »

Utilisation du hook qui affiche les produits pour chaque catégorie :

add_action('woocommerce_after_subcategory', function ($category) {
  $args = array(
    'post_type' => 'product',
    'posts_per_page' => 10,
    'product_cat' => $category->slug
  );
  $loop = new WP_Query( $args );
  if ($loop->have_posts()) { ?>
    <ul class="product-cat-products">
    <?php while ($loop->have_posts()) : $loop->the_post();
      global $product;
      wc_get_template_part('content', 'product');
    endwhile; ?>
    </ul>
  <?php }
  wp_reset_query();
});

C’est tout, il ne vous reste qu’à styler tout ça.