Как просчитать количество товаров WooCommerce WP_Query
Хочу просчитать количество товаров на странице категории с определенным атрибутом. Чтобы если количество товаров больше нуля, то показывать фильтр по категории
// получаем ID категории
$cate = get_queried_object();
$cateID = $cate->term_id;
echo $cateID;
// получаем товары нужной категории с нужным атрибутом
$product_cats = new WP_Query;
// делаем запрос
$productcats = $product_cats->query( array(
'post_type' => 'product',
'cat' => $cateID,
'post_status' => 'publish',
'tax_query' => array(
'meta_key' => 'pa_vysota-podema-mm'
)
) );
$products = wc_get_products($productcats);
if($products > 0) : ?>
//тут код фильтра по атрибуту
<?php endif;?>
Ответы (2 шт):
Автор решения: Pr0gramm1st
→ Ссылка
Так как у вас получится массив продуктов в строке $products = wc_get_products($productcats);, то вы можете подсчитать количество элементов в нём с помощью функции count(). То есть получится примерно следующее
<? if (count($products) > 0) : ?>
//здесь код фильтра по атрибуту
<?php endif; ?>
Автор решения: Роман Герасименко
→ Ссылка
Я решил этот вопрос так:
$args_vysoty = array(
'post_type' => 'product',
'post_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cateID
),
array(
'taxonomy' => 'pa_vysota-podema-mm',
'operator' => EXISTS
))
);
$query_vysoty = new WP_Query($args_vysoty);
<?php if($product_vysoty && $query_vysoty->post_count > 0) : ?>
<div class="filter-product__area filter-product__area-5">
<div class="filter-product__area-5-text filter-product__area-text">Высота <i class="fa-solid fa-chevron-down"></i></div>
<div class="filter-product__area-5-popup filter-product__area-popup">
<ul>
<?php foreach ($product_vysoty as $product_vysot) :?>
<li><label><input type="checkbox" <?php if( isset( $_GET[ 'pa_vysota-podema-mm' ] ) && $product_vysot->slug == $_GET[ 'pa_vysota-podema-mm' ] ) : ?>checked<?php endif; ?> name="pa_vysota-podema-mm" value="<?php echo $product_vysot->slug?>"><?php echo $product_vysot-> name ?> (<?php echo $product_vysot->count ?>)</label></li>
<?php endforeach;?>
</ul>
<input type="submit" class="" value="Применить">
</div>
</div>
<?php endif;?>