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

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

В стандартной установке WooCommerce после добавления товара в корзину происходит автоматическое обновление мини-корзины (виджета корзины в шапке) с помощью AJAX. Это удобно, но в ряде случаев автообновления вызывают проблемы:

  • Тормозит загрузка страницы при множественных AJAX-запросах (особенно на слабом хостинге);
  • Конфликты с кастомными скриптами или плагинами, меняющими корзину;
  • Нежелательные визуальные эффекты при обновлении корзины, например, мигание или перезагрузка части интерфейса;
  • Проблемы с кэшированием страниц, так как AJAX-запросы обновляют корзину динамически и это мешает работе некоторых CDN или плагинов кеширования.

Пошаговое отключение автоподгрузки корзины WooCommerce

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

WooCommerce использует скрипт wc-cart-fragments для автоматического обновления корзины. Чтобы отключить его, добавьте в файл functions.php вашей темы или в кастомный плагин такой код:

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

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

2. Убираем обновление счетчика товаров в корзине

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');

3. Настраиваем кнопку "Добавить в корзину" для обычного перезагрузки страницы

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

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

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

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

  • Скрипт wc-cart-fragments все равно загружается: возможно, подключение происходит позже — увеличьте приоритет хука до 20 или выше.
  • Мини-корзина не обновляется после добавления товара: это ожидаемо, но если у вас есть кастомные скрипты, зависящие от обновлений, их нужно адаптировать.
  • Кэширование страниц мешает обновлению корзины: при использовании кэширующих плагинов (WP Rocket, W3 Total Cache) отключайте кэширование для страниц корзины и оформления заказа.
  • Страница не перезагружается после добавления товара: проверьте, что кнопка "Добавить в корзину" — это обычная форма без AJAX, или отключите AJAX добавление в настройках темы.

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

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

Сравнение вариантов отключения автоподгрузки корзины

МетодПреимуществаНедостатки
Отключение скрипта wc-cart-fragmentsПростое решение, уменьшает нагрузкуМини-корзина не обновляется динамически
Отключение AJAX через настройки темы/плагинаПолный контроль, подходит для большинства темМожет потребовать модификации шаблонов
Кастомные скрипты для обновления корзиныГибкость, можно адаптировать под нуждыТребует навыков JS и PHP
Как создать собственный тип записи (Custom Post Type) в WordPress: подробное руководство с примерами
29.12.2025
Автоматическое удаление спама в комментариях WordPress
19.01.2026
Как настроить отложенный запуск задач в WordPress без использования WP-Cron
08.01.2026
WooCommerce: автоматическое изменение стоимости товаров при акциях
24.04.2026
Как изменить URL адрес постов в WordPress без перенаправлений
02.01.2026