Разработка сайтов, продвижение  в интернете и услуги IT для бизнеса.

+7 905 020-48-18

Пн-Пт, Вс с 10.00 до 24.00

Разработка сайтов, продвижение  в интернете и услуги IT для бизнеса.

+7 905 020-48-18

Пн-Пт, Вс с 10.00 до 24.00

Разработка сайтов, продвижение  в интернете и услуги IT для бизнеса.

+7 905 020-48-18

Пн-Пт, Вс с 10.00 до 24.00

Версия 1.7.4 · GPL-3.0-or-later

ITG Filter Easy

Виджет Elementor для AJAX-фильтрации товаров WooCommerce. Работает как боковой фильтр — не выводит товары сам, а управляет виджетом WooCommerce Products через URL-параметры и pre_get_posts. Без перезагрузки страницы.

Лицензия

GNU GPL v3 Плагин распространяется под лицензией GNU GPL v3 или выше.
https://www.gnu.org/licenses/gpl-3.0.html

Как это работает

1
Настройте атрибуты
Перейдите на вкладку «Структура» и добавьте нужные фильтры: категория, цена, бренд, атрибуты товаров.
2
Добавьте виджет
В Elementor перетащите виджет «ITG Filter» в боковую панель шаблона страницы магазина.
3
Укажите CSS-селектор
В настройках виджета введите CSS-селектор блока WooCommerce Products (по умолчанию: .elementor-widget-woocommerce-products).
4
Готово!
Фильтр обновляет список товаров через AJAX без перезагрузки страницы.

Вкладка «Структура» — атрибуты фильтра

Определяет фильтры в виджете и их порядок. Перетаскивайте строки для изменения порядка.

ПолеОписание
АтрибутТаксономия или встроенный тип. Встроенные: Категория, Цена, Бренд, Сортировка, Наличие, Акция, Поиск. Атрибуты (pa_*) — автоматически.
Тип отображенияФлажки, Радио, Кнопки, Выпадающий список, Мультиселект, Слайдер (только для Цены).
НазваниеЗаголовок группы фильтра. Пустое — имя атрибута по умолчанию.
Показать заголовокПри выключении заголовок группы скрывается.
Открыт по умолчаниюПри выключении группа свёрнута, раскрывается по клику.
Счётчик в заголовкеБейдж: сколько значений выбрано в группе.
Сортировка / ПорядокПо имени, ID, числовому значению. По возрастанию или убыванию.
Показать «Все»Только для Категории. Добавляет «Все категории» для сброса фильтра.
Показывать (список)Только для Категории и Бренда. Ограничивает список выбранными терминами.
ПодсказкаHTML-текст в попапе «?». Требует включения «Показывать подсказки» в Опциях.

Вкладка «Опции»

ОпцияОписание
ТемаМинимальный (без рамок), Стандартный (с рамками), Контрастный (тёмный фон).
АвтоприменениеОбновление товаров при каждом изменении фильтра или по нажатию «Применить».
Скрыть пустыеЗначения и группы с нулевым количеством товаров скрываются.
Тень под заголовкомЛёгкая тень под заголовком развёрнутой группы.
Показывать подсказкиИконка «?» рядом с заголовками групп с popup-текстом.
Иконка группыСторона (лево/право) и стиль (нет, треугольник, ±, шеврон).
Валюта брендаПоле валюты в product_brand. Цены конвертируются по курсу из JSON-фида.

Темы оформления

Минимальный
Категория
Стандартный
Категория
Контрастный
Категория

Пример: настройка текстового поиска

Фильтр «Текстовый поиск» позволяет вводить ключевое слово прямо в виджете. Список товаров обновляется через AJAX в связке со всеми другими фильтрами.

1
Откройте вкладку «Структура»
WooCommerce → ITG Filter → Структура.
2
Добавьте строку
Нажмите «+ Добавить атрибут» и выберите «Текстовый поиск» в группе «Встроенные».
3
Включите автоприменение
Вкладка Опции → «Автоприменение». Товары будут обновляться по мере набора текста (debounce).
4
Сохраните и проверьте
URL-параметр: ?itg_search=слово. Ссылку можно сохранить — результаты воспроизводятся.
✓ Поиск работает совместно со всеми фильтрами. «Категория: Насосы + поиск: центробежный» — только подходящие товары.

Требования плагина

WordPress
5.8+Проверен до 7.0
PHP
7.4+Рекомендуем 8.0+
WooCommerce
6.0+Обязательно
Elementor
3.0+Обязательно
Лицензия
GPL-3.0+Открытый код
Языки
6ru, en, de, fr, es, zh
Elementor Pro необязателен — достаточно бесплатного Elementor. Виджет WooCommerce Products (бесплатный) обязателен как целевой блок для AJAX-обновления.

Проверено Plugin Check (PCP)

Plugin Check 2.0.0 — ✅ Checks complete. No errors found.
Версия 1.7.4 · WordPress 7.0 · PHP 8.5 · WooCommerce 10.9.1
0
Ошибок
0
Предупреждений
28
Файлов
КатегорияРезультатЧто сделано
Устаревший load_plugin_textdomain()ИсправленоWP загружает переводы автоматически с WP 4.6
wp_unslash() перед санитизациейИсправленоДобавлен во все $_POST/$_GET обработчики
$_SERVER[REQUEST_URI]ИсправленоДобавлен esc_url_raw() в методе render()
Прямые запросы к БДАннотированоОбязательные для фасетного поиска; кэш через transient
Интерполяция SQLАннотированоИндексы JOIN — целые числа; phpcs:disable/enable
error_log()АннотированоНамеренный логгер ошибок курса валют
Plugin Check — официальный инструмент WordPress.org. Подробнее: wordpress.org/plugins/plugin-check

16 хуков плагина

Все хуки имеют префикс itg_flt_. Позволяют изменять поведение без редактирования файлов плагина.

itg_flt_defaultsITG_FLT_Settings

Добавить ключи в настройки по умолчанию.

itg_flt_settingsITG_FLT_Settings

Переопределить весь массив настроек.

itg_flt_brand_currencyITG_FLT_Currency

Переопределить код валюты для бренда.

itg_flt_pivot_rateITG_FLT_Currency

Переопределить курс обмена. null — пропустить.

itg_flt_converted_priceITG_FLT_Currency

Постобработка сконвертированной цены.

itg_flt_convert_price_enabledITG_FLT_Currency

false — отключить конвертацию для товара.

itg_flt_allowed_orderbyITG_FLT_Query

Список допустимых значений сортировки.

itg_flt_sanitize_paramsITG_FLT_Query

Массив санитизированных параметров фильтра.

itg_flt_tax_queryITG_FLT_Query

Изменить tax_query перед WP_Query.

itg_flt_meta_queryITG_FLT_Query

Изменить meta_query (цена, наличие).

itg_flt_filtered_countsITG_FLT_Query

Фасетные счётчики [term_id => count].

itg_flt_ajax_query_argsITG_FLT_Ajax

Аргументы WP_Query перед AJAX-запросом.

itg_flt_ajax_responseITG_FLT_Ajax

Изменить JSON-ответ AJAX.

itg_flt_price_rangeITG_FLT_Price

Диапазон цен [min, max] для слайдера.

itg_flt_price_range_cache_ttlITG_FLT_Price

TTL кэша диапазона цен (по умолчанию 6 ч).

itg_flt_script_dataITG_FLT_Frontend

Объект JS для фронтенда (ajax_url, nonce, i18n).

Примеры кода

ITG_FLT_Settings

add_filter( 'itg_flt_defaults', function( $defaults ) {
    $defaults['my_custom_option'] = true;
    return $defaults;
} );

ITG_FLT_Currency — фиксированный курс

add_filter( 'itg_flt_pivot_rate', function( $rate, $code ) {
    if ( $code === 'USD' ) return 90.0;
    return $rate;
}, 10, 2 );

add_filter( 'itg_flt_converted_price', function( $price ) {
    return round( $price / 100 ) * 100;
} );

ITG_FLT_Currency — лог ошибок

При сбое загрузки фида плагин пишет в error_log. Цены всегда отображаются — исходное значение как fallback.

СитуацияСообщение в логе
HTTP/сеть[ITG Filter Easy] Currency feed request failed for <url>
JSON невалиден[ITG Filter Easy] Currency feed JSON parse error (HTTP <code>)
Отсутствует "Valute"[ITG Filter Easy] Currency feed missing "Valute" key
Код не найден[ITG Filter Easy] Currency code <CODE> not found in feed
Nominal = 0[ITG Filter Easy] Invalid Nominal=0 for currency <CODE>
grep "ITG Filter Easy" /path/to/error.log

ITG_FLT_Query

add_filter( 'itg_flt_tax_query', function( $tq, $params, $query ) {
    $tq[] = [ 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured' ];
    return $tq;
}, 10, 3 );

ITG_FLT_Ajax

add_filter( 'itg_flt_ajax_response', function( $response, $query ) {
    $response['my_count'] = $query->found_posts;
    return $response;
}, 10, 2 );

ITG_FLT_Price

add_filter( 'itg_flt_price_range_cache_ttl', fn() => 60 );
add_filter( 'itg_flt_price_range', fn() => [ 'min' => 0, 'max' => 50000 ] );

Адаптация фида курса валют

По умолчанию плагин ожидает JSON формата ЦБ РФ. Для другого сервиса используйте itg_flt_pivot_rate.

Формат ЦБ РФ (встроенный)

{ "Valute": { "USD": { "Value": 90.15, "Nominal": 1 } } }
// rate = Value / Nominal

Подключение своего фида

add_filter( 'itg_flt_pivot_rate', function( $rate, $code ) {
    if ( $rate !== null ) { return $rate; }
    $key  = 'my_rates_' . gmdate( 'Y-m-d' );
    $data = get_transient( $key );
    if ( $data === false ) {
        $resp = wp_remote_get( 'https://example.com/rates.json', [ 'timeout' => 10 ] );
        if ( is_wp_error( $resp ) ) { return null; }
        $data = json_decode( wp_remote_retrieve_body( $resp ), true );
        if ( ! empty( $data ) ) { set_transient( $key, $data, 6 * HOUR_IN_SECONDS ); }
    }
    if ( isset( $data[ $code ] ) ) { return (float) $data[ $code ]; }
    return null;
}, 10, 2 );

Параметры

ПараметрЗначение
Опорная валютаАктивная валюта WooCommerce. 1 ВАЛЮТА_БРЕНДА = N единиц валюты магазина.
URL фидаWooCommerce → ITG Filter → Опции → URL фида
Кэш (TTL)6 часов · ключ: itg_flt_cbr_rates_YYYY-MM-DD_<md5>
Хук курсаitg_flt_pivot_rate ( float|null $rate, string $code )
Хук ценыitg_flt_converted_price ( float $converted, float $raw, int $brand_id, string $brand_cur, string $store_cur )
# Сброс кэша (WP-CLI):
wp transient delete --all
Заказать звонок

Нажимая на кнопку, вы принимаете условия Положения и
даете Согласие на обработку персональных данных.

Заказать КП

Нажимая на кнопку, вы принимаете условия Положения и
даете Согласие на обработку персональных данных.

Введите текст заголовка

Введите текст заголовка

Введите текст заголовка