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

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

В WooCommerce по умолчанию при изменении вариаций или атрибутов товара в корзине происходит автоматическое обновление страницы или корзины через AJAX. Это иногда приводит к некорректному отображению, двойным запросам или мешает пользовательскому опыту, если сайт использует кастомные скрипты или стили.

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

Чтобы убедиться, что автоматическое обновление корзины происходит именно из-за стандартного поведения WooCommerce, проверьте следующие моменты:

  • Измените атрибуты товара в корзине и посмотрите, происходит ли обновление страницы или AJAX-запрос.
  • Откройте консоль браузера (F12) и проверьте наличие AJAX-запросов к wc-ajax=get_refreshed_fragments.
  • Отключите сторонние плагины, которые могут влиять на корзину, чтобы исключить конфликт.
  • Проверьте, нет ли в теме или плагинах переопределения скриптов WooCommerce.

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

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

1. Отключение скрипта wc-cart-fragments.js

Добавьте следующий код в файл functions.php вашей дочерней темы или в кастомный плагин:

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

Это полностью отключит AJAX-обновление корзины.

2. Отключение только автоматического обновления при изменении атрибутов

Если нужно оставить обновление корзины в других случаях, но отключить именно автообновление после выбора вариаций в корзине, можно переопределить JS-событие. Добавьте код в файл custom.js или через wp_add_inline_script:

jQuery(function($){
    // Отключаем автоматическое обновление корзины при изменении вариаций
    $(document.body).off('change', '.variations_form select');
});

Этот код отключит реакцию на изменение атрибутов вариаций в корзине.

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

  • Очистите кэш браузера и кэш сайта (если есть).
  • Откройте страницу корзины, измените атрибуты товара и убедитесь, что страница не обновляется автоматически.
  • В консоли браузера больше не должно появляться AJAX-запросов wc-ajax=get_refreshed_fragments после изменения вариаций.
  • Проверьте, что корзина корректно отображает выбранные пользователем параметры.

Частые ошибки и как их исправить

  • Ошибка: После отключения скрипта корзина не обновляется при добавлении товаров.
    Причина: Полное отключение wc-cart-fragments.js убирает все AJAX-обновления корзины.
    Решение: Используйте второй метод с отключением события изменения вариаций или реализуйте собственный механизм обновления.
  • Ошибка: Отключение события не срабатывает.
    Причина: Скрипт подключается после вашего кода или тема использует обфусцированный JS.
    Решение: Убедитесь, что ваш скрипт подключен с зависимостью от jquery и с приоритетом после WooCommerce.
  • Ошибка: Конфликты с другими плагинами, изменяющими корзину.
    Причина: Плагины могут перезаписывать стандартные обработчики.
    Решение: Проверьте совместимость и настройте приоритет загрузки скриптов.

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

  • Полное отключение wc-cart-fragments.js уменьшит количество AJAX-запросов, что положительно скажется на производительности.
  • Обязательно протестируйте работу корзины на мобильных устройствах – отключение скрипта может повлиять на динамику обновления.
  • Если используете кэширование страниц, настройте исключения для страниц корзины и оформления заказа.
  • Для улучшения SEO и UX можно использовать плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpin.ru&utm_medium=article&utm_campaign=woocommerce-otkluchenie-avtoobnovleniya-korziny-pri-izmenenii-tovarov) для оптимизации скриптов и управления AJAX.

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

МетодПреимуществаНедостаткиКогда использовать
Отключение wc-cart-fragments.js полностьюПростота, уменьшение AJAX-запросовКорзина не обновляется автоматически при добавлении товаровЕсли нужен полный контроль над обновлением корзины
Отключение события изменения вариаций через JSСохраняется остальная функциональность обновления корзиныНужны базовые навыки JS; возможны конфликты с кастомными скриптамиЕсли нужно убрать автообновление только при выборе вариаций
Как создать собственный виджет WordPress с примерами кода
18.03.2026
Как отключить Emoji в WordPress для ускорения сайта
16.04.2026
Как удалить старые темы в WordPress без риска для сайта
13.04.2026
Автоматическое удаление товаров из корзины WooCommerce при отсутствии на складе
29.04.2026
WooCommerce: как отключить всплывающие окна при обновлении корзины
16.06.2026