serii81
@serii81
Я люблю phр...

Как вывести товары из категорий и подкатегорий в woocommerce?

Добрый вечер.
Есть категории и подкатегории и в те и другие товары.
5dd56af145dff708725417.jpeg

Нужно вывести название категории и если у нее есть подкатегории то вывести и их и потом уже товары из этой подкатегории.

По 5 товаров из каждой категории.

Должно выглядеть так
Категорий
товар товар товар
Категория
Подкатегория
товар товар товар
Подктегория
товар товар товар
Категория
товар товар товар

Вот код который я написал, только не могу засунуть подкаткегории в категории.
$taxonomy = 'product_cat';
$orderby = 'name';
$show_count = 0;      // 1 for yes, 0 for no
$pad_counts = 0;      // 1 for yes, 0 for no
$hierarchical = 1;      // 1 for yes, 0 for no
$title = '';
$empty = 1;

$args = array(
    'taxonomy' => $taxonomy,
    'orderby' => $orderby,
    'show_count' => $show_count,
    'pad_counts' => $pad_counts,
    'hierarchical' => $hierarchical,
    'title_li' => $title,
    'hide_empty' => $empty
);
$all_categories = get_categories($args); ?>

<?php foreach ($all_categories as $cat): ?>
    <?php if ($cat->category_parent == 0): ?>
        <h2 class="products-section__title"><?php echo $cat->name; ?></h2>
        <div class="bs-products-loops">
                                  <?php
                                  $products = new WP_Query([
                                  'post_type' => 'product',
                                  'posts_per_page' => 5,
                                  'product_cat' => $cat->slug
                                  ]);
                                  ?>
                                  
                                  <?php if ($products->have_posts()): ?>
                                  
                                  <?php while ($products->have_posts()): ?><?php $products->the_post(); ?>
                                  
                                  <?php do_action('woocommerce_product_loop_start'); ?>
                                  
                                  <?php wc_get_template_part('content', 'product'); ?>
                                  
                                  <?php do_action('woocommerce_product_loop_end'); ?>
                                  
                                  <?php endwhile; ?><?php wp_reset_postdata(); ?>
                                  
                                  <?php endif; ?>
                                  </div>
    <?php else: ?>
    <?php $category_parent = $cat->category_parent; ?>
        <?php
        $args2 = array(
            'taxonomy' => $taxonomy,
            'child_of' => 0,
            'parent' => $category_parent,
            'orderby' => $orderby,
            'show_count' => $show_count,
            'pad_counts' => $pad_counts,
            'hierarchical' => $hierarchical,
            'title_li' => $title,
            'hide_empty' => $empty
        );
        $sub_cats = get_categories($args2); ?>
        <?php if ($sub_cats): ?>
            <?php foreach ($sub_cats as $sub_category): ?>
                <h3><?php echo $sub_category->name; ?></h3>
                <div class="bs-products-loops">
                    <?php
                    $products = new WP_Query([
                        'post_type' => 'product',
                        'posts_per_page' => 5,
                        'product_cat' => $sub_category->slug
                    ]);
                    ?>

                    <?php if ($products->have_posts()): ?>

                        <?php while ($products->have_posts()): ?><?php $products->the_post(); ?>
                                                          
                                                          <?php do_action('woocommerce_product_loop_start'); ?>
                                                          
                                                          <?php wc_get_template_part('content', 'product'); ?>
                                                          
                                                          <?php do_action('woocommerce_product_loop_end'); ?>
                                                          
                                                          <?php endwhile; ?><?php wp_reset_postdata(); ?>

                    <?php else: ?><?php endif; ?>
                </div>
            <?php endforeach; ?>

        <?php endif; ?>
    <?php endif; ?>
<?php endforeach; ?>


Подскажите, где я ошибься?

Заранее благодарен.
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы