WooCommerce: как исправить неработающий AJAX для добавления товара в корзину

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

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

Основные признаки проблемы:

  • Кнопка добавления товара вызывает перезагрузку страницы.
  • В консоли браузера видны JavaScript ошибки.
  • Корзина не обновляется динамически в шапке сайта.
  • Проверка сети (Network) показывает, что AJAX запросы не отправляются или получают ошибку.

Причины неработающего AJAX в WooCommerce и как их проверить

1. Конфликт с темой или плагинами

Некорректная тема или плагин могут отключать скрипты WooCommerce или конфликтовать с ними.

Проверка:

  • Временно переключитесь на тему Storefront — официальную тему WooCommerce.
  • Отключите все плагины, кроме WooCommerce.
  • Проверьте работу AJAX добавления товара.

2. Отсутствие необходимых скриптов WooCommerce

AJAX функционал требует подключенных скриптов wc-add-to-cart и wc-cart-fragments. Если они отключены, AJAX работать не будет.

Проверка:

  • Откройте исходный код страницы и найдите подключения скриптов wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js и cart-fragments.min.js.
  • Если их нет, значит скрипты не подключаются.

3. Неправильные настройки WooCommerce AJAX

В некоторых случаях AJAX может быть отключен через фильтры или настройки.

Проверка:

  • Поищите в functions.php или в плагинах фильтры по ключу woocommerce_enqueue_styles и woocommerce_add_to_cart_fragments.

Пошаговое решение: исправляем AJAX добавление товара в корзину

Шаг 1. Проверяем и восстанавливаем подключение необходимых скриптов

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

function wpblock_enqueue_woocommerce_scripts() {
    if ( function_exists('is_woocommerce') && ( is_product() || is_shop() || is_product_category() ) ) {
        wp_enqueue_script('wc-add-to-cart');
        wp_enqueue_script('wc-cart-fragments');
    }
}
add_action('wp_enqueue_scripts', 'wpblock_enqueue_woocommerce_scripts', 20);

Шаг 2. Убедитесь, что кнопка "Добавить в корзину" содержит правильный класс и атрибуты

WooCommerce AJAX ожидает, что кнопка будет иметь класс ajax_add_to_cart и атрибут data-product_id. Пример правильной кнопки:

<a href="?add-to-cart=123" data-quantity="1" class="button ajax_add_to_cart" data-product_id="123" aria-label="Добавить товар в корзину" rel="nofollow">В корзину</a>

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

Шаг 3. Проверка отсутствия конфликтов JavaScript

Откройте консоль разработчика (F12) и проверьте ошибки. Если есть, попробуйте временно отключить сторонние скрипты, которые могут конфликтовать.

Шаг 4. Отключение кэширования для AJAX запросов WooCommerce

Если вы используете плагины кэширования (например, WP Super Cache, WP Rocket), убедитесь, что AJAX запросы WooCommerce не кэшируются. В настройках плагина добавьте исключения для URL с параметром add-to-cart и для REST API WooCommerce.

Как проверить, что решение сработало

  • Перейдите на страницу товара или магазина.
  • Откройте консоль браузера, очистите ее.
  • Нажмите кнопку "Добавить в корзину".
  • Проверьте, что страница не перезагружается.
  • В консоли отсутствуют ошибки JavaScript.
  • В разделе Network появится запрос AJAX к /?wc-ajax=add_to_cart с ответом 200.
  • В шапке сайта счетчик корзины обновился без перезагрузки.

Частые ошибки и их причины

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

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

  • Всегда подключайте только необходимые скрипты на страницах магазина и товаров, чтобы не перегружать остальные страницы.
  • Исключайте AJAX URL WooCommerce из кэширования и CDN, это критично для корректной работы корзины.
  • Регулярно проверяйте консоль браузера на наличие ошибок JavaScript, особенно после обновления тем и плагинов.
  • Используйте инструменты мониторинга производительности, чтобы отследить влияние AJAX-запросов на скорость сайта.

Таблица сравнения вариантов решения проблемы AJAX в WooCommerce

МетодПлюсыМинусыКогда использовать
Подключение стандартных скриптов WooCommerceГарантированная работа AJAX, простота реализацииМожет увеличить загрузку на страницах без корзиныЕсли скрипты не подключаются по умолчанию
Исправление разметки кнопокОбеспечивает правильное взаимодействие с AJAXТребует правок шаблоновЕсли кнопки кастомные или изменены
Отключение кэширования AJAX запросовУстраняет конфликты с кэш-плагинамиСложность настройки, зависит от плагинов кэшированияЕсли AJAX запросы кэшируются и не работают
Как создать динамический Gutenberg блок с внешним управлением состоянием в WordPress
14.01.2026
Как добавить атрибуты ARIA в Gutenberg блоках WordPress для улучшения доступности
16.04.2026
Как создать автоматическое обновление Gutenberg блоков в WordPress при изменении данных
13.02.2026
Как создать собственный визуальный редактор блоков Gutenberg в WordPress
20.11.2025
WooCommerce: решение проблемы неработающего AJAX добавления товара в корзину при конфликте с плагинами
25.05.2026

С появлением Gutenberg в WP появились и блоки. Однако не всем по душе новая версия редактора.