Зафиксировать шаблон (код) вывода категорий Woocommerce (я его назвал product-cat-list.php). Обычно я вывожу этот шаблон на стандартной странице /shop/
Шаблон вывода категорий
<div id="subcategory-archive">
<?php $terms = get_terms( array(
'taxonomy' => 'product_cat',
'hide_empty' => true,
'pad_counts'=> true,
'orderby' => 'name',
'parent' => 0
) ); ?>
<?php if($terms) : ?>
<?php foreach($terms as $term) : ?>
<div class="subcategory">
<a class="subcategory-image" href="<?php echo get_term_link($term->term_id);?>"><?php woocommerce_subcategory_thumbnail( $term ); ?></a>
<h2 class="subcategory-title"><a href="<?php echo get_term_link($term->term_id);?>"><?php echo $term->name;?></a></h2>
<p class="count"><?php if ($term->count > 0) : ?><?php echo $term->count; ?><?php else: ?>0<?php endif; ?></p>
<!--<div class="subcategory-descripton"><p><?php //if($term->description) : ?><?php //echo $term->description; ?><?php //else: ?>Описание термина таксономии<?php //endif; ?></p></div>-->
<?php // Создаем массив терминов детей текущего термина текущей таксономии
$tax = $term->taxonomy;
$children_terms = get_terms( array(
'taxonomy' => $tax,
'hide_empty' => false,
'parent' => $term->term_id
) ); ?>
<?php if($children_terms): // если есть дочерние категории ?>
<ul><?php foreach ($children_terms as $children_term) : ?>
<?php $link = get_term_link($children_term); ?>
<li><a href="<?php echo $link ?>";><?php echo $children_term->name ?></a></li>
<!--<p class="count"><?php //echo $children_term->count ?></p>-->
<?php endforeach; ?></ul>
<?php endif; // конец условия - если есть дочерние термины таксономии ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
Пересчет товаров во всех подкатегориях
В шаблоне выше выводится количество товаров в категориях, кол-во товаров в подкатегориях скрыто. Но тогда когда у нас есть подкатегории с товарами — необходимо считать товары во всех подкатегориях:
<?php if($children_terms): // если есть дочерние категории ?>
<ul><?php foreach ($children_terms as $children_term) : ?>
<?php $link = get_term_link($children_term); ?>
<li><a href="<?php echo $link ?>";><?php echo $children_term->name; ?></a>
<?php echo $children_term->count; ?></li>
<?php $summ[] = $children_term->count; // запись в массив кол-ва товаров из каждой подкатегории ?>
<?php endforeach; ?></ul>
<?php echo array_sum($summ); $summ = []; // вывод общего количества товаров и обнуление массива ?>
<?php endif; // конец условия - если есть дочерние термины таксономии ?>
Шаблон вывода меток товаров
Этот шаблон аналогичен шаблону вывода категорий, но есть 2 особенности: у данной таксономии нет вложенности, а также нет изображения термина таксономии (нужно делать с помощью плагина Taxonomy term image master).
<div class="subcategory-archive">
<?php $terms = get_terms( array(
'taxonomy' => 'product_tag',
'hide_empty' => true,
'pad_counts'=> true,
'orderby' => 'name',
'parent' => 0
) ); ?>
<?php if($terms) : ?>
<?php foreach($terms as $term) : ?>
<div class="subcategory">
<a class="subcategory-image" href="<?php echo get_term_link($term->term_id);?>"><div class="imagewrapper"><?php if ( $term->term_image ) { echo wp_get_attachment_image( $term->term_image, 'shop_catalog' ); } ?></div></a>
<h2 class="subcategory-title"><a href="<?php echo get_term_link($term->term_id);?>"><?php echo $term->name;?></a></h2>
<!--<p class="count"><?php //if ($term->count > 0) : ?><?php //echo $term->count; ?><?php //else: ?>0<?php //endif; ?></p>-->
<!--<div class="subcategory-descripton"><p><?php //if($term->description) : ?><?php //echo $term->description; ?><?php //else: ?>Описание термина таксономии<?php //endif; ?></p></div>-->
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
[site-socialshare]
Вы мне спасли жизнь этой статьей! Продолжайте делиться такими способами правки кода, который можно использовать без прикручивания многотонных плагинов! Благодарность к вам от меня — бемерная!