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

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

После обновления WooCommerce или WordPress некоторые пользователи сталкиваются с тем, что кнопки «Купить» на страницах товаров перестают работать: клики не добавляют товар в корзину, либо кнопка не реагирует вообще. Основные причины:

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

Как проверить, что именно вызывает проблему

  1. Откройте консоль браузера (F12 → Console) на странице товара и посмотрите на ошибки JavaScript.
  2. Отключите все плагины, кроме WooCommerce, и переключитесь на стандартную тему Storefront. Проверьте, работает ли кнопка.
  3. Отключите кэширование и CDN (Cloudflare и т.п.) на время тестирования.
  4. Проверьте корректность URL AJAX-запросов в Network (F12 → Network) – запросы на add_to_cart.php или wc-ajax/add_to_cart должны возвращать успешный ответ.

Пошаговое решение проблемы

1. Очистка и отключение кэша

Если используется плагин кэширования (например, WP Super Cache, W3 Total Cache, LiteSpeed Cache), очистите весь кэш и отключите кэширование JS на время теста. Также очистите кэш браузера.

2. Проверка и исправление конфликтов JavaScript

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

function fix_woocommerce_scripts() {
    if (function_exists('is_product') && is_product()) {
        wp_dequeue_script('custom-theme-script'); // замените на ваш скрипт
        wp_deregister_script('custom-theme-script');
    }
}
add_action('wp_enqueue_scripts', 'fix_woocommerce_scripts', 100);

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

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

Иногда тема отключает нужные скрипты. Принудительно подключите их в functions.php:

function force_load_woocommerce_assets() {
    if (function_exists('is_woocommerce') && is_woocommerce()) {
        wp_enqueue_script('wc-add-to-cart');
        wp_enqueue_script('jquery');
        wp_enqueue_style('woocommerce-general');
    }
}
add_action('wp_enqueue_scripts', 'force_load_woocommerce_assets', 20);

4. Проверка AJAX-запросов на добавление в корзину

Если AJAX не работает, можно временно переключить кнопку на классический способ с перезагрузкой. Для этого добавьте в functions.php:

add_filter('woocommerce_product_single_add_to_cart_text', function() {
    return __('В корзину', 'woocommerce');
});
add_filter('woocommerce_product_add_to_cart_url', function($url, $product) {
    return $product->add_to_cart_url();
}, 10, 2);

Это временно решит проблему, пока вы не устранили AJAX-конфликты.

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

  • Откройте страницу товара, нажмите «Купить» и убедитесь, что товар добавляется в корзину без перезагрузки страницы.
  • В консоли браузера не должно быть ошибок JS.
  • В разделе Network должны проходить AJAX-запросы без ошибок (статус 200).
  • Проверьте корзину на странице оформления заказа — товар должен там отображаться.

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

  • Ошибка: Скрипты не подключаются из-за настроек темы.
    Решение: Проверьте functions.php темы, отключите фильтры, которые могут отключать скрипты WooCommerce.
  • Ошибка: Кэширование ломает AJAX.
    Решение: Настройте исключения для AJAX URL в плагинах кэширования и CDN.
  • Ошибка: Конфликт с плагином, добавляющим кастомный функционал.
    Решение: Отключайте плагины по одному, чтобы выявить конфликтный, и обратитесь к разработчику или замените плагин.

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

  • Не отключайте AJAX полностью — это ухудшает UX и снижает конверсию.
  • Обновляйте WooCommerce и тему только после теста на staging-сервере.
  • Используйте Child Theme для правок, чтобы не потерять изменения при обновлениях.
  • Для кэширования используйте плагины, которые умеют работать с WooCommerce (например, WP Rocket, Clearfy Pro), и правильно настраивайте исключения.

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

МетодПлюсыМинусыКогда использовать
Очистка кэшаПростое и быстрое решениеНе всегда помогаетПри появлении ошибок после обновления
Отключение конфликтных скриптовТочное устранение причиныТребует технических знанийПри ошибках JS в консоли
Принудительная загрузка скриптов WooCommerceГарантирует загрузку нужных JSМожет конфликтовать с темойЕсли тема отключает скрипты
Переключение на классический способ добавления в корзинуВременно восстанавливает функциюПлохой UX, перезагрузка страницыКогда AJAX не работает, а времени на поиск причины нет
Как создать собственный REST API в WordPress
01.12.2025
Автоматическое удаление старого контента в WordPress
13.04.2026
Как создать динамические виджеты WordPress с помощью кода
09.04.2026
Как создать динамические шорткоды в WordPress: практическое руководство
15.11.2025
Как создать автоматическую регистрацию пользователей в WordPress с использованием хуков
30.01.2026