WooCommerce: как отключить автоматическое обновление корзины при изменении товаров

Проблема: автоматическое обновление корзины мешает пользовательскому опыту

В WooCommerce при изменении количества, атрибутов или вариантов товара в корзине по умолчанию происходит автоматическое обновление содержимого корзины. Это может приводить к нежелательным эффектам: всплывающим сообщениям, повторной загрузке страницы, сбросу пользовательских данных или даже конфликтам с кастомным JavaScript. Часто владельцы магазинов хотят отключить это поведение, чтобы повысить стабильность и UX.

Диагностика проблемы

Для начала подтвердите, что именно происходит обновление корзины автоматически:

  • Откройте корзину WooCommerce, измените количество товара или выберите другой вариант.
  • Обратите внимание, происходит ли мгновенная перезагрузка или изменение содержимого без нажатия кнопки «Обновить корзину».
  • Проверьте консоль браузера на наличие ошибок JavaScript, связанных с WooCommerce.

Если обновление происходит, и это вызывает проблемы — переходим к решению.

Пошаговое решение: отключение автоматического обновления корзины

1. Отключение скрипта обновления корзины

WooCommerce использует скрипт cart-fragments.js для обновления корзины без перезагрузки. Для отключения автоматического обновления можно деактивировать этот скрипт на странице корзины с помощью хука wp_dequeue_script.

add_action('wp_enqueue_scripts', function() {
    if (is_cart()) {
        wp_dequeue_script('wc-cart-fragments');
    }
}, 99);

2. Отключение AJAX-обновления на уровне формы корзины

Стандартная форма корзины WooCommerce содержит JavaScript, который реагирует на изменение количества и обновляет корзину автоматически. Чтобы убрать это, можно добавить скрипт, который отключит обработчик события на поле количества:

add_action('wp_footer', function() {
    if (is_cart()) {
        ?><script>
        jQuery(function($) {
            $('form.woocommerce-cart-form').off('change', 'input.qty');
        });
        <?php
    }
});

3. Добавление кнопки для ручного обновления корзины

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

По умолчанию WooCommerce уже выводит кнопку Обновить корзину. Проверьте, что она не удалена и работает корректно.

Проверка результата

  1. Перейдите на страницу корзины.
  2. Измените количество товара или выберите другой вариант.
  3. Убедитесь, что страница не обновляется автоматически, и содержимое корзины не меняется без нажатия кнопки «Обновить корзину».
  4. Нажмите кнопку «Обновить корзину» и проверьте, что изменения применились.

Частые ошибки и их исправления

  • Скрипт не отключается: Проверьте приоритет хука — используйте 99 или выше, чтобы гарантировать, что скрипт будет деактивирован после всех подключений.
  • Обработчики не отключаются с помощью jQuery: Убедитесь, что jQuery загружен и используйте jQuery(document).ready() или сокращение $(function(){}).
  • Кнопка обновления корзины отсутствует: Проверьте, не была ли она удалена в кастомной теме или плагинах. Добавьте обратно через шаблон cart/cart.php или с помощью фильтров.
  • Кэширование мешает проверке: Отключите кэширование на странице корзины, так как это может скрывать изменения.

Практические советы по производительности и безопасности

  • Отключение wc-cart-fragments уменьшит количество AJAX-запросов, что положительно скажется на производительности сайта.
  • Если на сайте используется кеширование страниц (например, WP Rocket, LiteSpeed Cache), обязательно добавьте страницу корзины в исключения, чтобы избежать конфликтов.
  • Проверяйте совместимость с кастомными плагинами, которые могут полагаться на автоматическое обновление корзины.

Сравнение способов отключения автоматического обновления корзины

МетодОписаниеПлюсыМинусы
Отключение скрипта wc-cart-fragmentsДеактивация основного AJAX-скрипта обновления корзиныПростая реализация, уменьшение AJAX-запросовВлияет на все AJAX-обновления корзины, может нарушить другие функции
Отключение обработчика изменения количества через jQueryУдаление события изменения input.qtyБолее точечный контроль, оставляет другие AJAX-функции активнымиТребует загрузки jQuery, может не работать при обновлении WooCommerce
Удаление кнопки обновления корзиныНе рекомендуется, но иногда используетсяУпрощение интерфейсаНевозможность обновления корзины вручную, плохой UX
Как создать настройки плагина WordPress с хранением данных в options
31.03.2026
Как создать многоуровневую пагинацию в WordPress с примерами кода
11.03.2026
WooCommerce: Автоматическое удаление товаров из корзины при отсутствии на складе
21.05.2026
WooCommerce: автоматическое удаление товаров из корзины при отсутствии на складе
21.05.2026
WooCommerce: автоматическое удаление товаров из корзины при отсутствии на складе
26.05.2026