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

Почему важно обновлять корзину без перезагрузки страницы

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

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

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

  • Используется ли стандартный шаблон WooCommerce, или тема/плагины переопределяют его.
  • Подключен ли скрипт wc-cart-fragments, отвечающий за обновление фрагментов корзины.
  • Нет ли конфликтов JavaScript в консоли браузера (F12 → Console).
  • Не отключен ли AJAX в настройках темы или плагинах.

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

1. Проверка подключения скриптов WooCommerce

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

add_action('wp_enqueue_scripts', function() {
    // Не отключайте wc-cart-fragments
    // Если отключали, закомментируйте или удалите такую строку:
    // wp_dequeue_script('wc-cart-fragments');
});

2. Добавление AJAX обновления корзины в шапку сайта

Добавьте следующий JavaScript код в футер или отдельный файл, подключаемый на всех страницах, чтобы при добавлении товара обновить фрагменты корзины:

jQuery(function($) {
    $('body').on('added_to_cart', function() {
        // Обновление виджетов корзины
        $.ajax({
            url: wc_cart_fragments_params.wc_ajax_url.toString().replace('%%endpoint%%', 'get_refreshed_fragments'),
            type: 'POST',
            success: function(data) {
                if (data && data.fragments) {
                    $.each(data.fragments, function(key, value) {
                        $(key).replaceWith(value);
                    });
                }
            }
        });
    });
});

3. Проверка темы на переопределение шаблонов корзины

В папке темы проверьте наличие файлов woocommerce/cart/ и woocommerce/cart-fragments.php. Если они есть, временно переименуйте папку woocommerce в woocommerce_backup и проверьте работу AJAX на стандартных шаблонах WooCommerce.

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

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

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

  • Отсутствие скрипта wc-cart-fragments: если скрипт отключен, AJAX не сработает. Проверьте и не отключайте его.
  • Конфликты JavaScript: другие плагины или кастомный код могут вызывать ошибки. Проверяйте консоль и отключайте конфликтующие плагины.
  • Переопределённые шаблоны WooCommerce: тема может использовать устаревшие или несовместимые шаблоны. Тестируйте с дефолтной темой Storefront.
  • Кэширование страниц: агрессивное кэширование может мешать работе AJAX. Исключите страницы с корзиной и добавлением в корзину из кэша.

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

  • Используйте локальный кеш скриптов для wc-cart-fragments, чтобы снизить нагрузку на сервер.
  • Ограничьте кэширование страниц с динамическими элементами, например, корзиной.
  • Проверяйте версии WooCommerce и темы на совместимость с AJAX-обновлением.
  • Регулярно обновляйте плагины и темы для безопасности, чтобы избежать уязвимостей в AJAX-обработчиках.

Сравнение способов реализации обновления корзины

МетодПреимуществаНедостатки
Стандартный скрипт wc-cart-fragmentsПрост в использовании, поддерживается WooCommerceМожет конфликтовать с кастомными темами
Кастомный AJAX код (как в статье)Гибкость, можно расширятьТребует поддержки и тестирования
Плагины для AJAX корзиныПростой запуск, готовые функцииМожет замедлять сайт, дополнительные зависимости
Как создать плагин для WordPress с нуля: подробное руководство с примером кода
21.11.2025
Как использовать WPRemark для автоматического модерирования комментариев в WordPress
14.02.2026
WooCommerce: как найти и исправить дублирующиеся артикулы (SKU) в продуктах
04.05.2026
WordPress: как избежать конфликтов между плагинами и быстро находить ошибки
23.12.2025
Как удалить данные пользователя из базы WordPress без ошибок
19.02.2026