Як автоматично оновити кошик WooCommerce при зміні кількості товару

Привіт:) У цій короткій замітці покажу як автоматично оновлювати кошик при зміні кількості товару у ньому.

За замовчуванням у плагіні WooCommerce можна оновити кошик лише по кнопці. Щоб додати автоматичне його оновлення без встановлення окремого плагіну, виберіть один із варіантів та додайте код у свій файл functions.php.

// ВАРІАНТ 1

function mp_autom_cart_update_after_changes_the_goods_quantity() {
    // Перевірка, якщо сторінка є Кошиком
    if ( ! is_cart() ) {
        return;
    }
    ?>
    <script>
        jQuery(function($) {
            var delay;
            // Вішаємо "слухача".
            $('.woocommerce').on('change', 'input.qty', function() {
                if (undefined !== delay) {
                    clearTimeout(delay);
                }
                // Затримка у півсекунди, щоб не генерувати лишні запити на сервер
                delay = setTimeout(
                    function() {
                        // Клікаємо на кпоку оновлення Кошика
                        $('[name="update_cart"]').trigger('click');
                    }, 500
                );
            });
        });
    </script>
    <style>
        /* Ховаємо кнопку */
        .woocommerce[name="update_cart"] {display: none;}
    </style>
    <?php
}
add_action( 'wp_footer', 'mp_autom_cart_update_after_changes_the_goods_quantity' );

// ВАРІАНТ 2

function mp_autom_cart_update_after_changes_the_goods_quantity() {
    if ( is_cart() ) :
    ?>
        <script>
            jQuery('div.woocommerce').on('change', '.button', function(){
                jQuery("[name='update_cart']").trigger("click"); 
            });
        </script>
    <?php
    endif;
}
add_action( 'wp_footer', 'mp_autom_cart_update_after_changes_the_goods_quantity' );

Михайло Петров
Михайло Петров

Мене звати Михайло. Я є WordPress-розробником. Створюю сайти з "нуля", розробляю плагіни, оновлюю наявний функціонал та підтримую готові проєкти.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *