HUSKY - Products Filter Professional for WooCommerce

Как показывать разные фильтры на разных страницах

Шорткод [woof] принимает атрибуты, позволяющие управлять тем, какие фильтры показывать и какие товары они выводят.

Основные атрибуты:

  • tax_only — Показывать только конкретные таксономии (категории, атрибуты)
  • by_only — Показывать только конкретные нетаксономические фильтры (цена, SKU, наличие и т.д.)
  • taxonomies — Показывать только конкретные термины таксономий (используется с динамическим пересчётом)

Примеры шорткодов

Фильтр по конкретным таксономиям

Показать только фильтры категории и бренда:

[woof tax_only="product_cat,pa_brand"]

Фильтр по нетаксономическим элементам

Показать только фильтры цены, SKU и наличия:

[woof by_only="by_price,by_sku,by_instock"]

Комбинация: таксономии + нетаксономические фильтры

Показать конкретные таксономии И нетаксономические фильтры:

[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price,by_instock"]

Использование атрибута taxonomies (для динамического пересчёта)

Показать только конкретные термины из конкретных таксономий:

[woof taxonomies="product_cat:35,42,58+pa_brand:nike,adidas"]

Примечание: Атрибут taxonomies используется, когда включён “dynamic recount” или “hide empty options”.

Полное руководство по настройке

Шаг 1: Создайте шорткоды

Создайте разные шорткоды [woof] для каждой страницы с подходящими атрибутами.

Пример:

  • Поставщик A: [woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"]
  • Поставщик B: [woof taxonomies="product_cat:50+pa_brand:nike,adidas" by_only="by_price"]

Шаг 2: Разместите шорткоды в виджетах

  1. Перейдите в Appearance → Widgets
  2. Добавьте виджет Text или Custom HTML в сайдбар
  3. Вставьте ваш шорткод в виджет
  4. Создайте отдельные виджеты для каждого шорткода

Шаг 3: Установите плагин условного отображения виджетов

Вам нужен плагин для управления видимостью виджетов в зависимости от условий страницы.

Выберите один:

Шаг 4: Задайте условия видимости

Добавьте условную логику для каждого виджета, чтобы управлять тем, где он появляется.

Примеры условной логики

Показать фильтр на конкретной странице

По slug страницы:

is_page('supplier-nike')

По ID страницы:

is_page(123)

Показать фильтр на нескольких страницах

is_page(array('supplier-1', 'supplier-2', 'supplier-3'))

Показать фильтр на архиве категории

По ID категории:

is_product_category(35)

По slug категории:

is_product_category('electronics')

Показать фильтр на пользовательской таксономии

is_tax('supplier', 'nike-products')

Исключить конкретные страницы

Показать везде, КРОМЕ страницы 123:

!is_page(123)

Полный пример настройки

Сценарий: 3 поставщика с разными фильтрами

Поставщик A (Nike) — ID страницы: 123

  • Шорткод: [woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"]
  • Условие виджета: is_page(123)
  • Результат: Показывает все категории товаров с фильтрами по размеру, цвету и цене

Поставщик B (Adidas) — slug страницы: adidas-products

  • Шорткод: [woof taxonomies="product_cat:40,41,42" by_only="by_instock"]
  • Условие виджета: is_page('adidas-products')
  • Результат: Показывает только категории 40, 41, 42 с фильтром наличия

Поставщик C — ID архива категории: 50

  • Шорткод: [woof tax_only="product_cat,pa_brand" by_only="by_price,by_sku"]
  • Условие виджета: is_product_category(50)
  • Результат: Показывает фильтры категорий, брендов, цены и SKU

Понимание атрибутов

tax_only против taxonomies

Используйте tax_only, когда:

  • Хотите показать целые таксономии (все термины)
  • Пример: tax_only="product_cat,pa_brand" показывает все категории и все бренды

Используйте taxonomies, когда:

  • У вас включён “dynamic recount” или “hide empty options”
  • Хотите показать конкретные термины из конкретных таксономий
  • Пример: taxonomies="product_cat:35,42+pa_brand:nike" показывает только категории 35 и 42, и только бренд Nike

Значения by_only

Доступные нетаксономические фильтры для by_only:

  • by_price — Слайдер диапазона цены
  • by_sku — Поиск по SKU
  • by_text — Текстовый поиск
  • by_author — Фильтр по автору
  • by_onsales — Показывать только товары со скидкой
  • by_instock — Показывать только товары в наличии
  • Ключи метаполей (если включены в настройках WOOF)

Используйте by_only="none", чтобы скрыть все нетаксономические фильтры.

Поиск ID и slug

ID категорий

  1. Перейдите в Products → Categories
  2. Наведите курсор на название категории
  3. Посмотрите на строку состояния браузера или URL
  4. Найдите tag_ID=35 — это число и есть ID вашей категории

ID страниц

  1. Перейдите в Pages
  2. Наведите курсор на название страницы
  3. Посмотрите на URL: post=123
  4. Это число и есть ID вашей страницы

Slug атрибутов

  1. Перейдите в Products → Attributes
  2. Slug атрибутов начинаются с pa_
  3. Примеры: pa_brand, pa_size, pa_color, pa_material

Проверка вашей настройки

  1. Сначала проверьте шорткоды
    • Разместите шорткод прямо на тестовой странице
    • Убедитесь, что фильтры отображаются корректно
    • Проверьте, что фильтрация работает
  2. Проверьте видимость виджетов
    • Откройте каждую страницу, где должен появиться фильтр
    • Убедитесь, что отображается правильный фильтр
    • Проверьте, что другие фильтры не появляются
  3. Убедитесь, что на странице только один фильтр
    • Несколько фильтров на одной странице будут конфликтовать
    • Используйте условия виджетов для обеспечения взаимоисключения

Важное ограничение

Только один фильтр на странице: На странице одновременно может быть активен только один фильтр WOOF. Несколько фильтров будут конфликтовать.

Решение: Используйте условную логику виджетов, чтобы на странице отображался только один виджет фильтра.

Советы

  1. Сначала протестируйте шорткоды напрямую
    • Перед добавлением в виджеты протестируйте шорткоды на обычной странице
    • Это гарантирует правильность атрибутов
  2. Используйте взаимоисключающие условия
    • Убедитесь, что условия виджетов не пересекаются
    • На странице должен быть виден только один фильтр
  3. Отрицательные условия
    • Используйте !is_page(123) для исключения конкретных страниц
    • Полезно для сценариев “показать везде, кроме”
  4. Проверяйте slug атрибутов
    • Slug атрибутов должны начинаться с pa_
    • Неправильный slug = фильтр не появится

Полная документация

Полный справочник по атрибутам шорткода: https://products-filter.com/shortcode/woof

Решение проблем

Фильтр не появляется

Возможные причины:

  • Условие виджета ложно для текущей страницы
  • Атрибуты шорткода неправильные
  • ID категории/атрибута не существуют
  • Конфликт нескольких фильтров

Решение:

  • Убедитесь, что ID/slug страницы совпадает с условием
  • Проверьте ID категорий в Products → Categories
  • Сначала протестируйте шорткод на обычной странице
  • Убедитесь, что на странице только один виджет фильтра

Показываются неправильные товары

Возможные причины:

  • Неправильные ID категорий
  • Неправильные slug атрибутов
  • Используется неправильный атрибут (tax_only вместо taxonomies)

Решение:

  • Перепроверьте ID категорий
  • Убедитесь, что slug атрибутов начинаются с pa_
  • Используйте taxonomies, если включён динамический пересчёт
  • Сначала протестируйте с более простым шорткодом

Отображается несколько фильтров

Причина: Условия виджетов пересекаются

Решение:

  • Проверьте все условия виджетов
  • Убедитесь во взаимном исключении
  • Используйте отрицательные условия для разделения

Фильтр показывается на неправильных страницах

Причина: Условие виджета слишком широкое

Решение:

  • Сделайте условие более конкретным
  • Используйте ID страницы вместо категории при необходимости
  • Тщательно проверьте логику условия

Итог

Чтобы показывать разные фильтры на разных страницах:

  1. Создайте пользовательские шорткоды [woof] с атрибутами tax_only и/или by_only
  2. Разместите каждый шорткод в отдельных виджетах Text/HTML
  3. Установите плагин Widget Logic
  4. Добавьте условную логику к каждому виджету (например, is_page(123))
  5. Проверьте, что на странице отображается только один фильтр

Помните: На странице может быть активен только один фильтр. Используйте условия виджетов для обеспечения взаимоисключения.