Как отключить автоматическую перезагрузку корзины WooCommerce при добавлении товара в тему WordPress

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

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

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

Как проверить наличие проблемы

  • Добавьте товар в корзину на странице магазина или товара.
  • Обратите внимание, происходит ли обновление корзины без полной перезагрузки страницы.
  • Если страница или корзина перезагружаются целиком, это указывает на отсутствие или некорректную работу AJAX.

Пошаговое решение: отключение автоматической AJAX-перезагрузки корзины

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

1. Отключаем AJAX добавление товара в корзину

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');

Этот фильтр предотвращает автоматическое обновление фрагментов корзины, которые обычно обновляются через AJAX.

2. Удаляем скрипты AJAX корзины WooCommerce

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

function dequeue_woocommerce_cart_fragments() {
    wp_dequeue_script('wc-cart-fragments');
}
add_action('wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);

Этот код отключит скрипт wc-cart-fragments.js, который контролирует обновление корзины через AJAX.

3. Обработка добавления товара без AJAX

После отключения AJAX добавления товара будет происходить классическое обновление страницы после добавления товара в корзину. Убедитесь, что кнопки «Добавить в корзину» используют стандартные ссылки с параметрами, например:

<a href="?add-to-cart=123" class="button add_to_cart_button">Добавить в корзину</a>

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

  • Перейдите на страницу товара или магазина.
  • Добавьте товар в корзину.
  • Убедитесь, что корзина не обновляется AJAX-ом — страница перезагружается целиком или обновляется ссылка в корзине без AJAX.
  • Проверьте консоль браузера на отсутствие ошибок JavaScript, связанных с WooCommerce.

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

  • Корзина не обновляется вообще: возможно, отключили скрипты, но в теме нет поддержки стандартных ссылок для добавления в корзину. Проверьте, что кнопки имеют правильный атрибут href="?add-to-cart=ID".
  • Конфликты JavaScript: если в консоли появляются ошибки, отключите сторонние плагины и проверьте совместимость темы с WooCommerce.
  • Некорректное отображение корзины: после отключения AJAX корзина может не обновлять количество товаров без перезагрузки страницы. В этом случае рассчитайте необходимость кастомного скрипта для обновления элементов.

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

  • Отключение AJAX корзины уменьшит нагрузку на сервер, особенно при большом трафике, так как не будет частых AJAX-запросов.
  • Обязательно тестируйте изменения на staging-сайте, чтобы избежать сбоев на боевом.
  • Следите за обновлениями WooCommerce — иногда в новых версиях меняется логика работы AJAX корзины.
  • Используйте кэширование страниц и оптимизацию скриптов, чтобы компенсировать отсутствие AJAX.

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

МетодКодПлюсыМинусы
Отключение фрагментов через фильтр
add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');
Простое отключение обновления корзины Корзина не обновляется без перезагрузки страницы
Деактивация скрипта wc-cart-fragments
wp_dequeue_script('wc-cart-fragments');
Полное отключение AJAX корзины Потеря интерактивности, требуется перезагрузка страницы
Использование плагинов для управления AJAX Зависит от плагина Упрощение настройки без кода Дополнительная нагрузка и возможные конфликты
Как удалить стандартную WooCommerce AJAX корзину и заменить её на собственную в теме WordPress
04.06.2026
Как добавить динамический класс в меню WordPress
25.01.2026
Как использовать хуки для динамического изменения вывода WooCommerce в теме WordPress
12.05.2026
Как создать персонализированные темы WordPress на основе детских тем
02.02.2026
Как использовать хуки для изменения вывода WooCommerce в теме WordPress
06.05.2026