Ценовой фильтр WooCommerce — срабатывает при изменении, а не при отправке

Кто-нибудь знает, как я могу настроить виджет ценового фильтра WooCommerce для фильтрации по триггеру «изменить» вместо кнопки отправки?

Он находится в templates/content-widget-price-filter.php, но, поскольку он сделан в виде формы, означает ли это, что я ДОЛЖЕН использовать кнопку отправки для запуска события?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
846
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В вашей дочерней теме вы можете создать скрипт jQuery, который обнаруживает щелчок по ползунку, чтобы автоматически нажимать кнопку «Фильтр».

jQuery( document ).ready(function($) {
    var priceSliderElements = $('.price_slider');
    var priceFilterFormSubmit = $('.widget.woocommerce.widget_price_filter .button[type = "submit"]');
    priceSliderElements.on('click', function() {
        priceFilterFormSubmit.click();
    })
});

Затем просто скройте кнопку фильтра в вашем css (можете сделать это в jQuery, если хотите):

.widget.woocommerce.widget_price_filter .button[type = "submit"] {
    display: none;
}

Проверено, работает :)

Принятый ответ работает, но его можно улучшить. Например, он отправляет форму, даже если пользователь нажимает на фильтр без изменения ценового диапазона.

WooCommerce запускает некоторые события, связанные с фильтрами, поэтому мы можем отправить форму только при необходимости:

jQuery(function( $ ) {
   
    $( document.body ).on( 'price_slider_create', function( e, min, max ) {
        window.priceFilterRange = [ min, max ];
    } );
    $( document.body ).on( 'price_slider_change', function( e, min, max ) {
        if ( window.priceFilterRange[0] != min || window.priceFilterRange[1] != max ) {
            $( '.widget.woocommerce.widget_price_filter .button[type = "submit"]' ).click();
        }
    } );
    
} );

Конечно, кнопку отправки все равно нужно скрыть :)

Ни одно из этих решений jquery не сработало для меня, поэтому то, что я сделал, может быть, кому-то поможет.

jQuery('body').on('price_slider_change'),function(event, min, max){ 
    jQuery('.widget_price_filter form').trigger('submit');
});

Другие вопросы по теме