WooCommerce не добавляет товар в корзину

Автор:vkuzyomko

WooCommerce не добавляет товар в корзину

Краткий ответ: WooCommerce не добавляет товар в корзину чаще всего из-за кеша, отключённых cookies, ошибки JavaScript, конфликта темы или плагина, неправильных страниц Cart/Checkout, проблем с AJAX add to cart, вариативного товара без выбранной вариации, статуса товара “нет в наличии” или сломанной WooCommerce-сессии.

Исправлять нужно по цепочке: сначала проверить сам товар и кнопку, потом корзину, cookies, кеш, AJAX-запросы, консоль браузера, WooCommerce pages, тему, плагины и только после этого менять код. Нельзя сразу отключать cart fragments или кеш глобально, потому что можно ускорить сайт, но сломать мини-корзину, checkout или динамическое обновление корзины.

Причина

Добавление товара в корзину WooCommerce зависит не только от кнопки “Add to cart”. В процессе участвуют товар, форма, JavaScript, AJAX, cookies, PHP-сессия WooCommerce, страницы Cart/Checkout, кеш, тема, плагины и иногда CDN.

Поэтому проблема может выглядеть одинаково, но иметь разные причины:

  • нажимаешь “В корзину”, но ничего не происходит;
  • кнопка крутится бесконечно;
  • товар добавляется, но корзина остаётся пустой;
  • товар появляется в мини-корзине, но пропадает после обновления страницы;
  • у авторизованного пользователя работает, у гостя — нет;
  • на компьютере работает, на телефоне — нет;
  • простые товары добавляются, вариативные — нет;
  • после включения кеша корзина перестала обновляться;
  • после обновления темы или WooCommerce сломался AJAX;
  • после установки плагина оптимизации кнопка перестала работать.

Если проблема появилась после доработки магазина, лучше проверить не только корзину, но и код, который меняет карточку товара, AJAX, checkout или WooCommerce hooks. Это уже относится к доработке WooCommerce.

Что именно может быть сломано

Симптом Вероятная причина Где проверять
Кнопка не реагирует JavaScript-ошибка или конфликт темы Console, Network, тема, плагины
Корзина пустая после добавления Кеш, cookies, WooCommerce session Кеш-плагин, серверный кеш, браузер
AJAX возвращает 400/500 PHP-ошибка, nonce, конфликт плагина Network, debug.log, WooCommerce logs
Вариативный товар не добавляется Не выбрана вариация или сломана форма вариаций Product variations, JS, шаблон single-product
У гостя не работает, у админа работает Кеш для гостей или cookies Page cache, CDN, browser cookies
На мобильном не работает JS-конфликт, мобильная мини-корзина, lazy/optimization Mobile DevTools, оптимизация JS
После добавления редирект не туда Неверные страницы Cart/Checkout или настройки WooCommerce → Settings → Advanced
Кнопки вообще нет Товар не покупаемый, catalog mode, out of stock Настройки товара, склад, плагины каталога

Диагностика

Сначала нужно понять, где ломается процесс: на фронтенде, в AJAX, в WooCommerce-сессии, в товаре или в кеше.

Быстрая проверка за 5 минут

  • откройте сайт в режиме инкогнито;
  • попробуйте добавить простой товар без вариаций;
  • проверьте, появляется ли товар в мини-корзине;
  • перейдите на страницу корзины вручную;
  • обновите страницу корзины;
  • проверьте, сохраняется ли товар после обновления;
  • откройте Console в DevTools и проверьте JavaScript-ошибки;
  • откройте Network и найдите запрос ?wc-ajax=add_to_cart или admin-ajax.php;
  • временно очистите кеш сайта, CDN и браузера;
  • проверьте, включены ли cookies в браузере.

Что проверить в WooCommerce

  • WooCommerce → Settings → Advanced — правильно ли назначены Cart, Checkout и My account pages;
  • WooCommerce → Settings → Products — включено ли AJAX add to cart на архивах, если используется AJAX;
  • WooCommerce → Status — нет ли системных предупреждений;
  • WooCommerce → Status → Logs — нет ли ошибок;
  • Product data — товар опубликован, имеет цену и доступен для покупки;
  • Inventory — товар в наличии, если включён контроль склада;
  • Variations — у вариативного товара есть активные вариации с ценой и наличием;
  • Templates — нет ли устаревших шаблонов WooCommerce в теме.

Что проверить в браузере

  • Console — ошибки JavaScript;
  • Network — статус AJAX-запроса;
  • Application → Cookies — создаются ли WooCommerce cookies;
  • Response AJAX-запроса — есть ли ошибка PHP или HTML вместо JSON;
  • Cache disabled в DevTools — меняется ли поведение без кеша браузера;
  • мобильную версию — иногда ломается только мобильная мини-корзина.

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Исправление нужно делать от простого к сложному. Если сразу менять код, можно спрятать настоящую причину и получить новую проблему в checkout.

1. Проверить товар

У товара должны быть базовые условия для покупки:

  • товар опубликован;
  • есть цена;
  • товар не в черновике;
  • товар не помечен как “нет в наличии”;
  • если включён склад — количество больше нуля;
  • для вариативного товара есть активные вариации;
  • у каждой нужной вариации есть цена;
  • товар не скрыт плагином catalog mode;
  • роль пользователя не ограничена от покупки.

2. Проверить страницы WooCommerce

Страницы корзины, оформления заказа и аккаунта должны быть назначены отдельно. Нельзя использовать одну и ту же страницу для Cart и Checkout.

Проверьте:

  • WooCommerce → Settings → Advanced → Page setup;
  • страница Cart содержит блок или shortcode корзины;
  • страница Checkout содержит checkout-блок или shortcode;
  • страницы не удалены;
  • страницы не закрыты от индексации через пароль;
  • страницы не подменяются шаблоном темы;
  • страницы исключены из полного кеширования.

3. Отключить кеш для корзины и checkout

Корзина, checkout и аккаунт должны оставаться динамическими. Если кеш отдаёт старый HTML, пользователь может видеть пустую корзину или чужое состояние мини-корзины.

Исключите из кеша:

  • /cart/
  • /checkout/
  • /my-account/
  • ?wc-ajax=
  • woocommerce_cart_hash
  • woocommerce_items_in_cart
  • wp_woocommerce_session_

Если после оптимизации сайт стал быстрее, но корзина перестала работать, отдельно проверьте настройки кеша и cart fragments. Подробно эта тема связана с ускорением WooCommerce, но отключать динамические функции нужно очень аккуратно.

4. Проверить cookies и сессии

WooCommerce использует cookies и сессии для хранения корзины пользователя. Если cookies блокируются браузером, CDN, кешем или security-плагином, товар может добавляться только “визуально”, а потом исчезать.

  • проверьте работу в другом браузере;
  • проверьте режим инкогнито;
  • отключите расширения браузера;
  • проверьте, не блокирует ли cookies баннер согласия;
  • проверьте, не меняется ли домен с www на без www;
  • проверьте HTTP/HTTPS редиректы;
  • проверьте Cloudflare/CDN rules;
  • проверьте серверный кеш.

5. Проверить AJAX add to cart

На страницах каталога WooCommerce может добавлять товар через AJAX без перезагрузки страницы. Если JavaScript сломан, кнопка может не работать или корзина не обновляется.

Проверьте в Network:

  • есть ли запрос ?wc-ajax=add_to_cart;
  • какой HTTP-статус у запроса: 200, 400, 403, 500;
  • возвращается ли JSON;
  • нет ли HTML-страницы ошибки вместо ответа;
  • нет ли ошибки security-плагина;
  • не блокируется ли запрос кешем или CDN;
  • не отключён ли нужный WooCommerce script.

6. Проверить тему

Частая причина — тема переопределяет шаблоны WooCommerce или выводит кастомную кнопку без правильных атрибутов.

На тестовой копии можно временно переключиться на стандартную тему и проверить добавление в корзину. Если на стандартной теме всё работает, причина почти точно в теме или её WooCommerce templates.

7. Проверить конфликты плагинов

Корзину могут ломать:

  • плагины кеша;
  • плагины оптимизации JavaScript;
  • плагины мини-корзины;
  • плагины checkout fields;
  • плагины вариаций и swatches;
  • плагины catalog mode;
  • плагины ролей и ограничений покупки;
  • security-плагины;
  • плагины мультиязычности;
  • плагины оплаты, если они вмешиваются в cart/checkout.

Проверять конфликты лучше на staging-копии, а не на живом магазине. Безопасный порядок описан в статье про конфликт плагинов WordPress.

Код

Важно: код ниже предназначен для диагностики WooCommerce. Не вставляйте всё сразу на рабочий магазин. Сначала сделайте бэкап и проверьте на тестовой копии. Ошибки в хуках корзины могут повлиять на добавление товара, checkout, оплату и сессии.

1. Включить debug.log

Куда вставлять: в файл wp-config.php перед строкой /* That’s all, stop editing! */.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

2. Логировать попытки добавления товара в корзину

Куда вставлять: лучше во временный служебный плагин или в functions.php дочерней темы только для диагностики.

<?php
if (!defined('ABSPATH')) {
    exit;
}

add_filter('woocommerce_add_to_cart_validation', 'sc_debug_add_to_cart_validation', 10, 5);

function sc_debug_add_to_cart_validation($passed, $product_id, $quantity, $variation_id = 0, $variations = array()) {
    error_log('================ SC ADD TO CART DEBUG ================');
    error_log('Product ID: ' . (int) $product_id);
    error_log('Quantity: ' . (int) $quantity);
    error_log('Variation ID: ' . (int) $variation_id);
    error_log('Passed: ' . ($passed ? 'yes' : 'no'));

    if (!empty($variations)) {
        error_log('Variations: ' . print_r($variations, true));
    }

    error_log('User ID: ' . get_current_user_id());
    error_log('Request URI: ' . (isset($_SERVER['REQUEST_URI']) ? sanitize_text_field($_SERVER['REQUEST_URI']) : ''));
    error_log('=======================================================');

    return $passed;
}

3. Проверить, загружены ли WooCommerce cart scripts

Этот код помогает увидеть, подключены ли скрипты WooCommerce на странице. Не используйте его как постоянное решение.

<?php
add_action('wp_footer', 'sc_debug_wc_scripts_loaded', 99);

function sc_debug_wc_scripts_loaded() {
    if (!current_user_can('manage_options')) {
        return;
    }

    if (!function_exists('is_woocommerce')) {
        return;
    }

    echo '<!-- SC WooCommerce scripts debug: ';
    echo 'wc-add-to-cart=' . (wp_script_is('wc-add-to-cart', 'enqueued') ? 'yes' : 'no') . '; ';
    echo 'wc-cart-fragments=' . (wp_script_is('wc-cart-fragments', 'enqueued') ? 'yes' : 'no') . '; ';
    echo 'woocommerce=' . (wp_script_is('woocommerce', 'enqueued') ? 'yes' : 'no') . '; ';
    echo '-->';
}

4. Тестовая ссылка добавления простого товара

Важно: используйте только для диагностики простого товара. Для вариативного товара нужен variation_id и выбранные атрибуты.

https://example.com/?add-to-cart=123

Замените example.com на домен сайта, а 123 на ID простого товара. Если такая ссылка работает, а кнопка на карточке товара нет — проблема часто в теме, JavaScript, шаблоне кнопки или AJAX.

5. AJAX-пример добавления простого товара

Важно: это пример для кастомной кнопки. Не заменяйте штатные кнопки WooCommerce без необходимости. Для вариативных товаров нужна отдельная логика выбора вариации.

<button type="button" class="sc-custom-add-to-cart" data-product-id="123">Добавить в корзину</button>
<div id="sc_add_to_cart_result"></div>

<script>
jQuery(document).ready(function() {
    jQuery(document).on('click', '.sc-custom-add-to-cart', function() {
        var productId = jQuery(this).data('product-id');

        jQuery.ajax({
            url: '<?php echo admin_url("admin-ajax.php") ?>',
            type: 'POST',
            dataType: 'json',
            data: {
                action: 'sc_custom_add_to_cart',
                product_id: productId,
                nonce: '<?php echo wp_create_nonce("sc_custom_add_to_cart_nonce") ?>'
            },
            success: function(response) {
                if (response.success) {
                    jQuery('#sc_add_to_cart_result').html(response.data.message);
                    jQuery(document.body).trigger('wc_fragment_refresh');
                } else {
                    jQuery('#sc_add_to_cart_result').html(response.data.message);
                }
            },
            error: function() {
                jQuery('#sc_add_to_cart_result').html('Ошибка добавления товара.');
            }
        });
    });
});
</script>

PHP-обработчик:

<?php
add_action('wp_ajax_sc_custom_add_to_cart', 'sc_custom_add_to_cart');
add_action('wp_ajax_nopriv_sc_custom_add_to_cart', 'sc_custom_add_to_cart');

function sc_custom_add_to_cart() {
    check_ajax_referer('sc_custom_add_to_cart_nonce', 'nonce');

    if (!function_exists('WC')) {
        wp_send_json_error(array(
            'message' => 'WooCommerce не активен.'
        ));
    }

    $product_id = isset($_POST['product_id']) ? (int) $_POST['product_id'] : 0;

    if ($product_id <= 0) {
        wp_send_json_error(array(
            'message' => 'Неверный ID товара.'
        ));
    }

    $product = wc_get_product($product_id);

    if (!$product || !$product->is_purchasable()) {
        wp_send_json_error(array(
            'message' => 'Товар недоступен для покупки.'
        ));
    }

    if (!$product->is_in_stock()) {
        wp_send_json_error(array(
            'message' => 'Товара нет в наличии.'
        ));
    }

    $added = WC()->cart->add_to_cart($product_id, 1);

    if (!$added) {
        wp_send_json_error(array(
            'message' => 'Не удалось добавить товар в корзину.'
        ));
    }

    wp_send_json_success(array(
        'message' => 'Товар добавлен в корзину.'
    ));
}

6. Не кешировать корзину через PHP-заголовки

Важно: это дополнительная страховка, а не замена настройкам кеш-плагина или серверного кеша. Если у вас Nginx, Cloudflare или серверный page cache, исключения нужно настроить именно там.

<?php
add_action('template_redirect', 'sc_no_cache_for_woocommerce_dynamic_pages');

function sc_no_cache_for_woocommerce_dynamic_pages() {
    if (!function_exists('is_cart') || !function_exists('is_checkout') || !function_exists('is_account_page')) {
        return;
    }

    if (is_cart() || is_checkout() || is_account_page()) {
        nocache_headers();
    }
}

Результат

После правильного исправления товар должен добавляться в корзину стабильно: у гостей и авторизованных пользователей, на компьютере и мобильном, после обновления страницы, при включённом кешировании обычных страниц и без поломки checkout.

Хороший результат

  • простые товары добавляются в корзину;
  • вариативные товары добавляются после выбора вариации;
  • корзина не очищается после обновления страницы;
  • мини-корзина обновляется корректно;
  • страница Cart показывает актуальные товары;
  • Checkout получает правильный состав заказа;
  • cookies WooCommerce создаются;
  • AJAX-запросы возвращают нормальный JSON;
  • в Console нет JavaScript-ошибок;
  • в debug.log нет PHP fatal errors;
  • кеш не ломает Cart, Checkout и My account.

Дополнительные способы

Вариант 1: Исправить настройки WooCommerce

Подходит, если проблема в страницах корзины, настройках товаров, AJAX add to cart или неправильных страницах Cart/Checkout.

Плюсы: быстро, без кода, минимальный риск.

Минусы: не поможет при конфликте темы, плагинов или кеша.

Вариант 2: Настроить кеш и CDN

Подходит, если товар добавляется, но корзина пустая, старая или разная для гостей и авторизованных пользователей.

Плюсы: часто решает проблему без правок WooCommerce.

Минусы: нужно проверять кеш-плагин, серверный кеш, CDN, cookies и исключения.

Вариант 3: Найти конфликт темы или плагина

Подходит, если проблема появилась после обновления, установки плагина или смены темы.

Плюсы: устраняет настоящую причину.

Минусы: лучше делать на staging-копии, чтобы не ломать рабочий магазин.

Вариант 4: Исправить кастомную кнопку add to cart

Подходит, если кнопка была сделана вручную в шаблоне, Elementor, кастомном блоке или отдельном плагине.

Плюсы: можно сохранить нужный дизайн и UX.

Минусы: нужно правильно обработать простые, вариативные, grouped и external товары.

Вариант 5: Перепроверить оптимизацию JavaScript

Подходит, если корзина сломалась после минификации, defer, delay JS, объединения скриптов или отключения WooCommerce assets.

Плюсы: часто быстро возвращает работу кнопки.

Минусы: часть оптимизаций придётся исключить для WooCommerce-страниц.

Безопасность

Корзина связана с покупкой, checkout, оплатой и персональными данными. Нельзя чинить её хаотичными сниппетами из интернета без проверки.

Что нельзя делать

  • нельзя отключать все WooCommerce scripts глобально;
  • нельзя кешировать Cart, Checkout и My account как обычные страницы;
  • нельзя доверять product_id из POST без проверки;
  • нельзя делать кастомный add to cart без nonce, если это отдельный AJAX-обработчик;
  • нельзя игнорировать наличие товара и purchasable status;
  • нельзя тестировать опасные правки на живом магазине в активное время;
  • нельзя отключать security-плагин на рабочем сайте без понимания последствий;
  • нельзя править файлы WooCommerce напрямую.

Что нужно использовать

  • staging-копию для проверки;
  • бэкап перед изменениями;
  • debug.log для ошибок PHP;
  • DevTools Network для AJAX;
  • исключения кеша для динамических страниц;
  • проверку товара через wc_get_product();
  • проверку is_purchasable() и is_in_stock();
  • nonce для кастомных AJAX-запросов;
  • точечное подключение JS, а не глобальные костыли.

Производительность

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

Что может тормозить или ломать корзину

  • cart fragments на всех страницах без необходимости;
  • тяжёлая мини-корзина в шапке;
  • много плагинов, которые слушают add_to_cart hooks;
  • AJAX-запросы через admin-ajax.php на каждой странице;
  • серверный кеш без исключений WooCommerce cookies;
  • оптимизация JS, которая откладывает WooCommerce scripts;
  • медленный хостинг или PHP memory limit;
  • ошибки в кастомных функциях functions.php.

Что помогает без поломки

  • кешировать обычные страницы, но не Cart/Checkout/Account;
  • точечно исключать WooCommerce scripts из delay/defer;
  • проверять cart fragments перед отключением;
  • убрать тяжёлую мини-корзину там, где она не нужна;
  • проверить медленные плагины, которые вмешиваются в корзину;
  • не запускать тяжёлые API-запросы на hook add_to_cart;
  • проверить скорость AJAX-запросов в Network;
  • тестировать полный путь: товар → корзина → checkout → заказ.

Частые ошибки

Чистить только кеш браузера

Проблема часто не в браузере, а в page cache, серверном кеше, CDN или кешировании WooCommerce cookies. Нужно чистить и проверять все уровни.

Отключать cart fragments без проверки

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

Игнорировать вариативные товары

Вариативный товар нельзя добавить как простой, если не выбрана конкретная вариация. Нужны variation_id и атрибуты.

Тестировать только под администратором

Администратор часто видит некешированную версию сайта. Гость может получать кешированную страницу, где корзина работает неправильно.

Не смотреть Network

Без Network непонятно, отправляется ли AJAX-запрос, какой статус он возвращает и что пришло в ответе.

Не проверять cookies

Если WooCommerce cookies не создаются или блокируются, корзина может очищаться после перехода на другую страницу.

Править файлы WooCommerce напрямую

После обновления WooCommerce такие правки пропадут или начнут конфликтовать с новой версией.

Смешивать несколько плагинов корзины

Мини-корзина, side cart, ajax cart, checkout optimizer и theme cart drawer могут конфликтовать между собой.

Диагностика проблем

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

  • открыть Console;
  • проверить JavaScript-ошибки;
  • проверить, загружен ли wc-add-to-cart;
  • временно отключить оптимизацию JS;
  • проверить тему на тестовой копии;
  • проверить конфликт плагинов;
  • проверить кастомный шаблон кнопки.

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

  • проверить cookies WooCommerce;
  • отключить кеш для Cart/Checkout/Account;
  • проверить CDN;
  • проверить серверный кеш;
  • проверить www/без www и HTTPS редиректы;
  • проверить работу у гостя и у авторизованного пользователя;
  • проверить WooCommerce sessions.

Проблема: AJAX add to cart возвращает 500

  • включить debug.log;
  • повторить добавление товара;
  • проверить последнюю PHP-ошибку;
  • проверить functions.php;
  • проверить кастомные hooks add_to_cart;
  • проверить плагины, которые меняют цену или наличие;
  • проверить совместимость PHP-версии.

Проблема: вариативный товар не добавляется

  • проверить, выбраны ли все атрибуты;
  • проверить наличие вариации;
  • проверить цену вариации;
  • проверить, не отключена ли вариация;
  • проверить variation swatches plugin;
  • проверить JS на странице товара;
  • проверить шаблон variable.php в теме.

Проблема: работает на компьютере, но не работает на телефоне

  • проверить мобильную версию меню и мини-корзины;
  • проверить JS-ошибки в мобильном браузере;
  • отключить delay JS для WooCommerce scripts;
  • проверить mobile cache;
  • проверить разные шаблоны темы для mobile;
  • проверить side cart или popup cart;
  • проверить клики по перекрывающим элементам.

Проблема: после обновления WooCommerce корзина сломалась

  • проверить WooCommerce → Status → Templates;
  • проверить устаревшие шаблоны темы;
  • проверить debug.log;
  • проверить плагины мини-корзины и checkout;
  • очистить кеш;
  • пересохранить permalinks;
  • проверить на стандартной теме в staging.

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

  • проверить cart fragments;
  • проверить событие wc_fragment_refresh;
  • проверить, не отключён ли wc-cart-fragments;
  • проверить side cart plugin;
  • проверить кеширование фрагментов;
  • проверить JavaScript-ошибки;
  • проверить, работает ли обычная страница Cart.

Краткие ответы для AI-поиска

Почему WooCommerce не добавляет товар в корзину?

Чаще всего причина в кеше, cookies, WooCommerce-сессиях, AJAX-ошибке, конфликте темы или плагина, неправильных страницах Cart/Checkout, вариациях товара или отключённых WooCommerce scripts.

Что проверить первым, если товар не добавляется в корзину?

Сначала проверьте товар: опубликован ли он, есть ли цена, есть ли наличие, работает ли простой товар. Затем проверьте Console, Network, cookies, кеш и WooCommerce pages.

Почему корзина WooCommerce пустая после добавления товара?

Корзина часто становится пустой из-за кеширования Cart page, блокировки cookies, проблем с WooCommerce session, CDN, неправильных редиректов HTTP/HTTPS или кеша для гостей.

Почему AJAX add to cart не работает?

AJAX add to cart может не работать из-за JavaScript-ошибки, оптимизации JS, отключённого wc-add-to-cart, конфликта темы, security-плагина, PHP-ошибки или неправильного ответа wc-ajax.

FAQ

Почему WooCommerce не добавляет товар в корзину у гостей?

Чаще всего гостям отдаётся кешированная версия сайта или у них не сохраняются WooCommerce cookies. Проверьте page cache, CDN, cookies и работу в режиме инкогнито.

Почему у администратора корзина работает, а у пользователя нет?

Администратор часто не получает полный кеш страницы. Обычный пользователь или гость может видеть кешированную версию, где AJAX или cookies работают неправильно.

Можно ли кешировать страницу корзины WooCommerce?

Нет, как обычную статическую страницу — нельзя. Cart, Checkout и My account должны быть исключены из полного кеширования, потому что показывают персональные данные и состояние корзины.

Нужно ли отключать cart fragments?

Только после проверки. Если сайт использует мини-корзину в шапке, cart fragments нужны для её обновления. Полное отключение может сломать отображение корзины.

Почему вариативный товар не добавляется в корзину?

Нужно проверить, выбраны ли все атрибуты, есть ли активная вариация, указана ли цена, есть ли наличие и не ломает ли форму вариаций тема или plugin swatches.

Почему кнопка “В корзину” пропала?

Причины: товар без цены, нет в наличии, catalog mode, внешний товар, ограничение по роли, ошибка шаблона темы или плагин, который заменяет кнопку.

Что делать, если AJAX возвращает 403?

Проверьте security-плагин, nonce, правила WAF, Cloudflare, admin-ajax.php, wp_ajax hooks и кеш страницы. Иногда 403 даёт защита от ботов или firewall.

Что делать, если AJAX возвращает 500?

Включите debug.log, повторите добавление товара и проверьте последнюю PHP fatal error. 500 почти всегда требует смотреть серверную ошибку, а не только настройки WooCommerce.

Может ли плагин оптимизации сломать корзину?

Да. Delay JS, defer, minify, combine JS, отключение WooCommerce assets и агрессивный кеш могут сломать кнопку добавления, AJAX и обновление мини-корзины.

Можно ли исправить проблему без программиста?

Иногда да: очистить кеш, исключить Cart/Checkout/Account из кеша, проверить товар, страницы WooCommerce и отключить конфликтный плагин. Если есть PHP-ошибки, кастомная тема или AJAX-код, нужен разработчик.

Вывод

Если WooCommerce не добавляет товар в корзину, причина редко находится в одной кнопке. Нужно проверить товар, вариации, страницы Cart/Checkout, cookies, WooCommerce sessions, кеш, AJAX, Console, Network, тему, плагины и debug.log.

Правильный подход — не отключать всё подряд, а идти по цепочке. Сначала простой товар и базовые настройки WooCommerce, потом кеш и cookies, затем AJAX и JavaScript, после этого тема, плагины и кастомный код. Так можно исправить корзину без поломки checkout, оплаты и дальнейших заказов.

Об авторе

vkuzyomko administrator