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 запросы кэшируются и не работают
Как создать визуальный редактор шорткодов в WordPress
09.03.2026
Как создать адаптивный Gutenberg блок с поддержкой разных размеров экрана
24.03.2026
WooCommerce: как решить проблему повторного входа пользователя после оплаты
20.04.2026
Как добавить внутренний кэш в WordPress плагинах для ускорения работы
20.03.2026
Как изменить внутренний HTML Gutenberg блока в WordPress
05.12.2025

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