Afficher tous les produits par catégorie avec WooCommerce

12

Avec WooCommerce, je souhaite afficher toutes les catégories d'un magasin sous forme d'en-têtes, avec tous leurs produits répertoriés ci-dessous dans une liste non ordonnée. Est-ce possible? J'ai vu quelques choses qui me permettraient d'afficher une liste de catégories ou une liste de produits pour une catégorie spécifique, mais rien ne ferait défiler tout ce que j'ai décrit.

Voici ce que j'utilise actuellement pour répertorier toutes les catégories:

<?php
$args = array(
    'number'     => $number,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</h4>';
    }
}
?> 
    
posée JacobTheDev 25.03.2014 - 21:40

1 réponse

19

Je l'ai compris! Le code ci-dessous répertorie automatiquement toutes les catégories et chaque catégorie de messages!

$args = array(
    'number'     => $number,
    'orderby'    => 'title',
    'order'      => 'ASC',
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</a></h4>';
        $args = array(
            'posts_per_page' => -1,
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    // 'terms' => 'white-wines'
                    'terms' => $product_category->slug
                )
            ),
            'post_type' => 'product',
            'orderby' => 'title,'
        );
        $products = new WP_Query( $args );
        echo "<ul>";
        while ( $products->have_posts() ) {
            $products->the_post();
            ?>
                <li>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </li>
            <?php
        }
        echo "</ul>";
    }
}
    
réponse donnée JacobTheDev 26.03.2014 - 17:28

Lire d'autres questions sur les étiquettes