WooCommerce: что делать, если не обновляется корзина после добавления товара

Сценарий типичный: товар добавился, уведомление показалось, а мини-корзина, счетчик или страница корзины остаются в старом состоянии. В WooCommerce это обычно не «поломка корзины», а конфликт AJAX, кэша, темы или скриптов. Ниже — как быстро локализовать причину и исправить ее без лишних изменений в ядре.

Что именно ломается: мини-корзина, счетчик или сама страница

Сначала важно понять, где проявляется проблема. Это влияет на решение.

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

Быстрая диагностика в админке и браузере

Перед правками проверьте три вещи:

  1. Откройте сайт в режиме инкогнито и добавьте товар в корзину.
  2. Посмотрите консоль браузера на ошибки JavaScript.
  3. Временно отключите плагины кэша, минификации и отложенной загрузки JS.

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

Почему WooCommerce не обновляет корзину

У этой проблемы обычно несколько практических причин:

  • страница или фрагменты корзины кэшируются как обычный HTML;
  • скрипт wc-cart-fragments не загружается или отложен слишком агрессивно;
  • тема переопределяет мини-корзину и не вызывает обновление фрагментов;
  • оптимизатор объединяет JS так, что ломает зависимости WooCommerce;
  • плагин безопасности или CDN режет AJAX-запросы к ?wc-ajax=add_to_cart или ?wc-ajax=get_refreshed_fragments.
ПодходКогда подходитМинус
Настройка кэшаЕсли проблема появилась после установки кеш-плагинаНужно исключать страницы и AJAX
Код в теме/плагинеЕсли мини-корзина не обновляется из-за темыТребует аккуратной проверки после обновлений
Отключение оптимизации JSЕсли ошибка появилась после ускорения сайтаМожет немного ухудшить показатели загрузки

Пошаговое решение

1. Исключите корзину и оформление из кэша

Для WooCommerce нельзя кэшировать страницы корзины, оформления заказа и «Мой аккаунт». Если кэш-плагин хранит их как обычные страницы, корзина будет вести себя непредсказуемо.

Проверьте, что исключены:

  • /cart/
  • /checkout/
  • /my-account/
  • страницы с параметрами AJAX WooCommerce

Если вы используете CDN, убедитесь, что он не кэширует ответы на запросы wc-ajax.

2. Не отключайте фрагменты корзины без причины

Иногда в попытке ускорить сайт отключают wc-cart-fragments. Это может сломать мини-корзину и счетчик в шапке. Если у вас нет точного понимания, какие элементы завязаны на этот скрипт, лучше не удалять его полностью.

Если нужно проверить, не он ли виноват, временно отключите только оптимизацию JS, а не сам WooCommerce. Так проще понять источник проблемы.

3. Принудительно обновляйте фрагменты корзины

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

add_action( 'wp_enqueue_scripts', function () {
    if ( ! function_exists( 'is_woocommerce' ) ) {
        return;
    }

    wp_add_inline_script( 'wc-cart-fragments', "
        jQuery( function( $ ) {
            $( document.body ).on( 'added_to_cart', function() {
                $( document.body ).trigger( 'wc_fragment_refresh' );
            } );
        } );
    " );
}, 20 );

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

4. Проверьте, не ломает ли тема мини-корзину

Если в теме есть собственный шаблон корзины в шапке, сравните его с дефолтным поведением WooCommerce. Частая ошибка — выводить количество товаров через PHP один раз при загрузке страницы и не обновлять его через JS.

Для счетчика в шапке можно использовать стандартный фильтр фрагментов WooCommerce:

add_filter( 'woocommerce_add_to_cart_fragments', function( $fragments ) {
    ob_start();
    ?>
    <span class="header-cart-count"><?php echo WC()->cart ? WC()->cart->get_cart_contents_count() : 0; ?></span>
    <?php
    $fragments['span.header-cart-count'] = ob_get_clean();

    return $fragments;
} );

Здесь важно, чтобы селектор span.header-cart-count совпадал с разметкой в теме. Если селектор не совпадает, фрагмент обновится, но на странице ничего не изменится.

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

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

  • добавление простого товара;
  • добавление товара с вариацией;
  • добавление товара на странице категории и на странице товара;
  • обновление мини-корзины в шапке;
  • переход на страницу корзины после добавления.

Что должно быть видно в браузере:

  • в консоли нет ошибок JavaScript;
  • запрос ?wc-ajax=add_to_cart возвращает успешный ответ;
  • после добавления товара меняется счетчик и содержимое мини-корзины;
  • при обновлении страницы корзина сохраняет товары, а не откатывается назад.

Если у вас есть доступ к DevTools, откройте вкладку Network и убедитесь, что запросы WooCommerce не получают 403, 404 или HTML-страницу вместо JSON.

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

Отключили AJAX, но проблема не ушла

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

Очистили кэш, но ничего не изменилось

Если кэш-плагин очищен, а проблема осталась, проверьте серверный кэш, CDN и браузерный кэш. На практике именно CDN и агрессивная минификация чаще всего сохраняют старую версию скриптов.

Счетчик обновляется, а мини-корзина нет

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

После оптимизации JS перестала работать кнопка «Добавить в корзину»

Частая причина — отложенная загрузка или объединение скриптов, из-за чего WooCommerce не видит зависимости. Для проверки временно отключите:

  • defer для JS;
  • delay JavaScript execution;
  • объединение файлов JS;
  • lazy load для скриптов WooCommerce.

Что делать, если проблема появляется только на мобильных

На мобильных часто всплывает отдельная версия шапки или мини-корзины. Если десктоп работает, а мобильная корзина не обновляется, ищите:

  • дублирующуюся разметку в мобильном хедере;
  • отдельные скрипты темы для мобильного меню;
  • скрытые элементы, которые не получают обновленные фрагменты;
  • разные классы для одного и того же блока корзины.

В таких случаях полезно сравнить DOM на десктопе и мобильном, а не только смотреть на внешний вид.

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

Не стоит лечить проблему полным отключением защитных или ускоряющих плагинов на постоянной основе. Лучше точечно исключить WooCommerce-страницы и AJAX-эндпоинты из кэша и оптимизации.

  • не кэшируйте корзину и checkout;
  • не объединяйте без проверки скрипты WooCommerce с чужими библиотеками;
  • не удаляйте wc-cart-fragments, если мини-корзина зависит от него;
  • после обновления темы повторно проверьте хедер и шаблоны корзины;
  • если используете CDN, добавьте исключения для WooCommerce AJAX.

Если нужен более системный аудит дублей, кэша и лишних нагрузок на сайте, имеет смысл посмотреть в сторону инструментов вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpboard.ru&utm_medium=article&utm_campaign=woocommerce-ne-obnovlyaetsya-korzina-posle-dobavleniya-tovara. Но даже с таким плагином правила для WooCommerce остаются теми же: корзина, оформление и AJAX должны быть исключены из агрессивной оптимизации.

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

Автоматическое удаление заказов WooCommerce по статусу и дате через код
06.06.2026
WooCommerce: правильное удаление вариантов товаров через код
13.05.2026
Как сделать отложенный запуск функций в WordPress
07.04.2026
Как удалить комментарии по автору в WordPress
22.01.2026
Как создать собственный виджет в WordPress с примером кода
28.12.2025