Добрый день. Очень часто такое бывает, создаете магазин на Woocommerce, продумываете структуру каталога и создаете все необходимые категории товаров. Но вот досада, зайдя в магазин вашего сайта Вы ничего не видите. Т.к. пустые категории не отображаются. Так вроде это нормально, но хочется увидеть структуру, как это будет выглядеть, да и дополнительные описания и другие дизайнерские решения тоже хочется глянуть не создавая ложный товар, после добавления которого отобразятся все категории которые есть в цепочке по товару.
Собственно и вопрос Как сделать отображение пустых категорий (категорий в которых нет ни единого товара)?
Если желаем отобразить пустые категории везде на сайте, добавляем в functioins.php своей темы такой код, используя фильтр ‘woocommerce_product_subcategories_hide_empty’:
<?php
/* Разрешить показывать пустые категории в магазине */
add_filter( 'woocommerce_product_subcategories_hide_empty', '__return_false' );
?>
Если нужно отобразить только в определенном месте, если у вас идет цикл выборки категорий или еще какой-то вызов, то используйте перед вызовом определение аргументов, примерно так:
$args = array(
'hide_empty' => 0, // Показывать пустые - 1, не показывать - 0
);
Например, вам нужно выбрать родительские категории, то таким кодом, применяя стандартную функцию wordpress get_terms — можно их получить все, даже пустые (зависит от значения параметра «hide_empty»):
$top_categories = get_terms("product_cat", [
"orderby" => "menu_order", // Тип сортировки
"order" => "ASC", // Направление сортировки
"hide_empty" => 0, // Скрывать пустые. 1 - да, 0 - нет.
"hierarchical" => 1,
"parent" => 0
]);
// далее применяем цикл для вывода / или используем $top_categories там где нужно
Бывает так, что просят вывести заполненные и пустые родительские категории, а дочерние пустые скрывать. Можно попробовать таким кодом, как всегда добавляя его в functions.php:
<?php
add_filter( 'woocommerce_product_subcategories_hide_empty', 'wplife_show_empty_cat', 10, 1 );
function wplife_show_empty_cat ( $show_empty ) {
$show_empty = true; // Добавляем логику true - показывать, false - скрывать
return $show_empty;
}
?>
Надеюсь Вы нашли себе подходящее решение и создали свой уникальный магазин на WooCommerce.
Спасибо, что дочитали до конца, в комментариях задавайте вопросы.