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

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

Проблема с неотображением корзины в WooCommerce после добавления товара встречается часто. Основные причины:

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

Как проверить проблему

  • Откройте консоль браузера (F12 > Console) и проверьте наличие ошибок JavaScript.
  • Проверьте запросы в Network — есть ли AJAX-запросы к wc-ajax=get_refreshed_fragments и какой ответ они возвращают.
  • Временно переключитесь на стандартную тему Storefront и отключите все плагины кроме WooCommerce, чтобы проверить конфликт.
  • Отключите кэширование на сайте и в браузере.

Пошаговое решение: исправляем обновление корзины в WooCommerce

1. Добавьте поддержку AJAX-фрагментов корзины в вашей теме

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

function wpeducation_enqueue_woocommerce_scripts() {
    // Подключаем скрипты WooCommerce для правильной работы AJAX
    if (function_exists('is_woocommerce') && (is_woocommerce() || is_cart() || is_checkout())) {
        wp_enqueue_script('wc-cart-fragments');
    }
}
add_action('wp_enqueue_scripts', 'wpeducation_enqueue_woocommerce_scripts');

2. Исправьте вывод мини-корзины с поддержкой AJAX

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

<div class="widget_shopping_cart_content">
	<?php woocommerce_mini_cart(); ?>
</div>

Если вы выводите корзину вручную, используйте woocommerce_mini_cart() для корректной интеграции.

3. Отключите кэширование для корзины и AJAX-запросов

Кэширование страниц и AJAX-запросов мешает обновлению корзины. В настройках плагина кэширования (например, WP Rocket, W3 Total Cache) добавьте исключения для URL, связанных с корзиной:

  • /cart/
  • /checkout/
  • wc-ajax — все AJAX-запросы WooCommerce

Пример правила для wp-config.php, чтобы отключить кэширование для AJAX:

define('DONOTCACHEPAGE', true); // Временно для отладки

4. Проверьте правильность работы PHP-сессий и cookie

WooCommerce использует cookie для отслеживания корзины. Проверьте, что cookie woocommerce_cart_hash и woocommerce_items_in_cart устанавливаются и обновляются в браузере.

Если у вас конфликты с сессиями, попробуйте добавить в wp-config.php:

ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
session_start();

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

  • Добавьте товар на страницу магазина, убедитесь, что корзина обновилась без перезагрузки страницы.
  • Проверьте в консоли браузера отсутствие ошибок JavaScript.
  • Откройте вкладку Network, убедитесь, что AJAX-запросы wc-ajax=get_refreshed_fragments возвращают корректные данные.
  • Проверьте cookie браузера — они должны обновляться при добавлении товара.

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

  • Ошибка: Отсутствие скрипта wc-cart-fragments.
    Решение: Добавьте wp_enqueue_script('wc-cart-fragments') в functions.php.
  • Ошибка: Кэширование страницы мешает обновлению корзины.
    Решение: Отключите кэширование для страниц корзины и AJAX-запросов.
  • Ошибка: Конфликт с темой, в которой корзина не реализована через полноценный мини-карт виджет.
    Решение: Используйте стандартные функции WooCommerce для мини-корзины или исправьте шаблон.
  • Ошибка: Ошибки JavaScript, блокирующие выполнение скриптов.
    Решение: Проверьте консоль и исправьте ошибки, связанные с jQuery или другими библиотеками.

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

  • Не отключайте защиту nonce WooCommerce в AJAX-запросах — это важно для безопасности.
  • Отключайте кэширование только для нужных URL, не снижая общую производительность сайта.
  • Регулярно обновляйте WooCommerce и тему, чтобы избежать несовместимостей.
  • Для снижения нагрузки используйте Object Cache и CDN, но исключайте из кэширования динамические AJAX-запросы корзины.

Сравнение методов решения проблемы обновления корзины

МетодОписаниеПлюсыМинусы
Использование стандартного скрипта wc-cart-fragmentsПодключение стандартного WooCommerce скрипта для AJAX обновленияПростота, надежность, обновления вместе с WooCommerceЗависит от правильной работы темы и кэша
Кастомный AJAX-обработчикНаписание собственного AJAX для обновления корзиныГибкость, можно модифицировать логикуСложность, требует поддержки и тестирования
Отключение кэширования корзиныИсключение из кэша страниц и AJAX запросов корзиныОбеспечивает корректную работу корзиныМожет ухудшить производительность при неправильной настройке
WooCommerce: автоматическое отключение платежных систем при неоплате заказа
27.05.2026
WooCommerce: автоматическое отключение платёжных систем при неоплате заказов по IP
17.06.2026
Как создать и использовать собственные виджеты в WordPress
07.11.2025
Как отключить комментарии для отдельных типов записей в WordPress
28.03.2026
WooCommerce: автоматическое удаление старого неоплаченного заказа с подробной настройкой
01.07.2026