Мне нужен foreach здесь ниже, чтобы возвращать результаты только тогда, когда с категорией связаны продукты. На данный момент он также возвращает «некатегоризованную категорию» Woocommerce, и мне нужно отфильтровать эту категорию или любую категорию без продуктов. Возможно, это быстрое решение, но я не могу понять.
<?php
defined( 'ABSPATH' ) || exit;
function wcc_product_by_cat() {
$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 ){
echo '<div id="cat-list__sidebar">';
foreach ( $product_categories as $product_category ) {
echo '<div class="card"><div class="card-header" id="heading-'. $product_category->slug .'"><h5 class="mb-0"><button class="btn btn-link" data-toggle="collapse" data-target="#'. $product_category->slug .'" aria-expanded="true" aria-controls="'. $product_category->slug .'">' . $product_category->name . '</button></h5></div>';
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $product_category->slug
)
),
'post_type' => 'product',
'orderby' => 'title,'
);
$products = new WP_Query( $args );
echo '<div id="'. $product_category->slug .'" class="collapse" aria-labelledby="heading-'. $product_category->slug .'" data-parent="#cat-list__sidebar"><div class="card-body"><ul>';
while ( $products->have_posts() ) {
$products->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</li>
<?php
}
echo '</ul></div></div></div>';
}
echo '</div>';
}
}
add_action(
'wcc_before_shop_sidebar',
'wcc_product_by_cat', 10);
?>