Задать вопрос
@Support23

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

Сложно сформулировать вопрос, поэтому опишу так:

На странице каталога есть выводится иерархия категорий (в виде ссылок):
Общая
- Подкатегория 1
- - Подкатегория 1.1
- Подкатегория 2
- Подкатегория 3

При переходе к общей категории должны выводиться ссылки трёх дочерних категорий. При переходе к категории 1 - выводится только её дочерня категорию 1.1. В общем, в таком стиле.

Для этого есть следующее решение, которое работает:

<?php
if ( is_product_category() ) {
    $term = get_queried_object();
    $taxonomy = $term->taxonomy;

    echo '<h3>Категория: ' . $term->name . '<h3>'; // выводим текущую категорию

    // получаем дочерние, если существуют
    if ( $term_children = get_term_children( $term->term_id, $taxonomy ) ) {
      echo '<ul>';
        foreach ( $term_children as $key => $term_child ) {
          $term_child = get_term_by( 'id', $term_child, $taxonomy );
          // выводим дочерние
          echo '<li><a href="' . get_term_link( $term_child->term_id, $taxonomy ) . '">' . $term_child->name . '</a></li>';
        }
      echo '</ul>';
    }
  }
?>

Мне нужно сделать так, чтобы под каждой категории находились товары из этой категории. Условно это выглядит так: в "подкатегории 1" находятся 2 товара. Если переходим в общую категорию, будет должна быть картинка:

Подкатегория 1
-- [список товаров с подкатегорией 1]
Подкатегория 2
Подкатегория 3
Подскажите, как я могу добиться такого результата? Хотя бы какой-нибудь маломальский пример как выводить товары (хотя бы ссылки заголовки, дальше сам разберусь).

Для вывода списка категорий и товаров под ними есть вот такой пример. Но он выводит все категории и подкатегории на любой странице архива:
$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>";
    }
}
  • Вопрос задан
  • 219 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы