WooCommerce: не работают кнопки «Купить» после обновления — как исправить

Диагностика проблемы с кнопками «Купить» в WooCommerce

После обновления WooCommerce или темы часто возникает ситуация, когда кнопки «Купить» (Add to cart) перестают работать: они не реагируют на клики или не добавляют товар в корзину. Это ведет к падению конверсии и требует быстрого решения.

Причины обычно связаны с конфликтами JavaScript, устаревшими шаблонами темы, неправильной инициализацией AJAX-обработчиков или изменениями в хуках WooCommerce.

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

  • Откройте консоль браузера (F12 → Console) и посмотрите ошибки JavaScript при клике на кнопку «Купить».
  • Проверьте, загружаются ли скрипты WooCommerce, особенно add-to-cart.js.
  • Активируйте стандартную тему Storefront или Reboot (https://wpshop.ru/themes/reboot?utm_source=wpcatalog.ru&utm_medium=article&utm_campaign=woocommerce-ne-rabotayut-kupitelnye-knopki-posle-obnovleniya) для проверки конфликта с темой.
  • Отключите все сторонние плагины, кроме WooCommerce, чтобы исключить конфликт.

Пошаговое решение проблемы с кнопками «Купить»

1. Проверка и обновление шаблонов темы

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

Для этого:

  • Перейдите в wp-content/themes/your-theme/woocommerce.
  • Проверьте дату файлов и сравните с оригинальными из последней версии WooCommerce (wp-content/plugins/woocommerce/templates).
  • Обновите шаблоны, заменив устаревшие или удалите их, если не нужны.

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

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

function force_enqueue_wc_scripts() {
    if ( function_exists('is_woocommerce') && ( is_woocommerce() || is_cart() || is_checkout() ) ) {
        wp_enqueue_script('wc-add-to-cart');
    }
}
add_action('wp_enqueue_scripts', 'force_enqueue_wc_scripts', 99);

3. Проверка AJAX-обработчиков

Убедитесь, что AJAX добавление в корзину работает, добавив в functions.php следующий сниппет для отладки:

add_action('wp_ajax_test_add_to_cart', function() {
    wp_send_json_success('AJAX работает');
});
add_action('wp_ajax_nopriv_test_add_to_cart', function() {
    wp_send_json_success('AJAX работает');
});

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

jQuery.post(wc_add_to_cart_params.ajax_url, { action: 'test_add_to_cart' }, function(response) {
    console.log(response);
});

Если ответ не приходит, проблема в AJAX-обработке или в неправильной локализации скриптов.

4. Очистка кэша и отключение минификации JS

Если у вас включены плагины кэширования и оптимизации (например, Autoptimize), временно отключите минификацию JS и кэш, чтобы проверить влияние на работу кнопок.

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

  • Зайдите на страницу товара и нажмите кнопку «Купить» — товар должен добавиться в корзину без перезагрузки.
  • Проверьте консоль браузера — не должно быть ошибок.
  • Убедитесь, что количество товаров в иконке корзины обновляется динамически.
  • Повторите тест на разных браузерах и устройствах.

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

  • Ошибка: Не обновляется количество товаров в корзине после добавления.
    Причина: Ваша тема не поддерживает фрагменты обновления WooCommerce.
    Решение: Добавьте поддержку в functions.php:
add_theme_support('woocommerce');
  • Ошибка: Конфликт JavaScript из-за стороннего плагина.
    Решение: Отключайте плагины по одному и выявляйте виновника.
  • Ошибка: Кнопки не работают на странице архива товаров.
    Решение: Используйте правильный хук для инициализации скриптов на страницах архивов:
add_action('wp_enqueue_scripts', function() {
    if (is_shop() || is_product_category() || is_product_tag()) {
        wp_enqueue_script('wc-add-to-cart');
    }
}, 99);

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

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

Сравнение подходов для решения проблемы с неработающими кнопками «Купить»

МетодПлюсыМинусы
Обновление шаблонов темыСовместимость с последним WooCommerce, стабильностьТребует времени и навыков PHP
Принудительная загрузка скриптовБыстрое решение, минимальные измененияМожет не решить конфликт с устаревшими шаблонами
Отключение плагинов кэширования и минификацииВыявляет конфликт, простоВременное ухудшение производительности
Создание динамического фильтра в WordPress для каталога
22.12.2025
Автоматизация обновления каталога в WordPress: плагины и кастомный код
19.03.2026
Как использовать хуки для изменения отображения цен в WooCommerce
01.05.2026
WooCommerce: автоматический обзвон покупателей после оформления заказа
16.05.2026
WooCommerce: автоматическое отключение товаров при нулевом остатке
20.05.2026