Скрыть атрибуты фильтра WBW Product Filter если нет товаров через шорткод на странице категорий и главной
Задача: Скрыть атрибуты фильтра если нет товаров выводимого через шорткод на странице категорий и главной
Я вывожу фильтр WBW Product Filter PRO на странице категорий магазина Woocommerce используя фильтрацию только по атрибутам товаров.
Вывожу через плагин Ad Inserter через шорткод [ wpf-filters id=3 ]
У меня в обоих категориях с фильтром показывает все атрибуты (есть атрибут с 1 товаром из 1й категории - фильтр выводит также атрибут во второй со значением 0)
В настройках плагина есть настройка - делать серым пустые категории. но это относится к фильтру если фильтрация по меткам или категориям, а у меня значения атрибута. Т.е. даже не атрибуты а значение одного атрибута.
Вот пример фильтра, который показывает значение которого не должно быть (зачем мне лишние пустые значения в фильтре)
пример фильтра который показывает значение которого не должно быть
В настройках фильтра нет возможность скрывать.
Я решил поступить так: Добавим class для элемента списка < li > если внутри него значение кол-ва товаров - 0.
<span class="wpfCount">0</span>
Для этого добавим вот такой скрипт
function addClassToZeroCountItems() {
document.querySelectorAll('.wpfFilterVerScroll li').forEach(function(li) {
const countEl = li.querySelector('.sopi.wpfCount');
if (countEl && countEl.textContent.trim() === '0') {
li.classList.add('zaplata-pusto');
} else {
li.classList.remove('zaplata-pusto'); // на случай, если счётчик изменился
}
});
}
// Запускаем после загрузки страницы
document.addEventListener('DOMContentLoaded', addClassToZeroCountItems);
// Также запускаем после AJAX-обновления фильтра (WPF использует jQuery-событие)
if (typeof jQuery !== 'undefined') {
jQuery(document).on('wpf_ajax_success wpf_filter_loaded', addClassToZeroCountItems);
}
// Опционально: запустить с небольшой задержкой, если фильтр рендерится асинхронно
setTimeout(addClassToZeroCountItems, 500);