
🔧 Как исправить отсутствие кнопки «Добавить в корзину» в WooCommerce
Почему кнопка «В корзину» исчезает с товаров WooCommerce
Вы настраивали магазин, добавили десяток товаров, но заходите на страницу, а вместо кнопки «В корзину» пустота. Клиент не может купить. Паника. Но проблему решить проще, чем кажется на первый взгляд.
Причин у пропажи кнопки ровно пять: от незаполненной карточки товара до серверного mod_security. Две из них закрываются в два клика. Ещё две, парой строк кода. И только одна требует звонка хостингу. Ниже, пошаговый разбор с кодом, скриншотами и конкретными действиями.
💡 Быстрый обзор:
- Сначала проверьте карточку товара, цена и наличие обязательны
- Отключите все плагины разом и включите только WooCommerce, если кнопка появилась, виноват конфликт
- Зайдите в настройщик темы, возможно, кнопка просто скрыта переключателем
- Поправьте шаблон темы через редактор кода, замена трёх строк в
single.php - Откройте консоль браузера: ошибка JavaScript → звоните хостингу, проблема в mod_security
1. Проверьте карточку товара, цена и наличие
WooCommerce показывает кнопку «В корзину» только когда товар можно купить. Нельзя купить, нет кнопки. Логика простая.
Откройте Товары → Все товары → выбрать проблемный → Править. В блоке «Данные товара» проверьте три поля:
- Цена, обычная цена обязательна, даже если товар со скидкой. Поле «Цена» не должно быть пустым.
- Наличие, статус «В наличии» или «Доступен для предзаказа». Значение «Нет в наличии» прячет кнопку.
- Вариативные товары, каждая вариация должна иметь свою цену и статус наличия.
Частая ошибка: создали вариативный товар, добавили атрибуты, цвет, размер, но не прописали цену для конкретных вариаций. WooCommerce в этом случае не понимает, по какой цене продавать, и просто не показывает кнопку.
Заполнили → Обновить → открыть страницу товара на сайте. В большинстве простых случаев проблема решена уже на этом шаге.
2. Найдите конфликт плагинов
WordPress собирает код из активной темы и всех активных плагинов. Если два плагина используют одинаковые названия функций, перехватывают одни и те же хуки или просто несовместимы, WooCommerce может потерять кнопку.
Порядок диагностики:
- Перейдите в Плагины → Установленные. Выделите все (галочка сверху), в выпадающем меню «Действия» выберите «Деактивировать» → Применить.
- Включите только WooCommerce. Откройте страницу проблемного товара.
- Кнопка появилась, конфликт подтверждён. Включайте плагины по одному, после каждого проверяйте страницу товара. Плагин, после активации которого кнопка снова исчезла, виновник.
- Замените проблемный плагин аналогом или свяжитесь с его разработчиком.
Отдельный подвид этой проблемы, конфликт с фильтром woocommerce_show_variation_price. Некоторые темы и плагины возвращают false для этого хука, WooCommerce скрывает цену вариации и теряет кнопку. Если после отключения всех плагинов кнопка на месте, а видимого «виновника» нет, проверьте functions.php активной темы на строки с woocommerce_show_variation_price.
Принудительно включить отображение можно фильтром:
1 add_filter('woocommerce_show_variation_price', function() { 2 return true; 3 });
Вставьте этот код в functions.php активной (дочерней) темы или через плагин Code Snippets. После сохранения проверьте товар.

3. Настройщик темы, невидимый переключатель
Некоторые темы добавляют собственный переключатель видимости кнопки. Логика разработчиков: «дадим пользователю гибкость». На практике переключатель по умолчанию в положении «скрыть», и владелец магазина об этом не знает.
Зайдите в Внешний вид → Настроить. Ищите секцию:
- WooCommerce → Product Page (или Контент → WooCommerce, зависит от темы);
- Параметр «Add to Cart Button» / «Кнопка добавления в корзину» → Visible (или «Показывать»).
Сохраните настройки и проверьте товар. Работает для тем, которые используют customizer-секции WooCommerce поверх стандартного шаблона, популярно у тем с ThemeForest: Avada, Flatsome, WoodMart.
4. Поправьте шаблон темы в редакторе
Если предыдущие шаги не дали результата, проблема глубже: тема использует нестандартный шаблон страницы товара и не вызывает WooCommerce-функцию вывода кнопки.
Что происходит. WordPress загружает страницу товара через файл темы single.php (или index.php как fallback). Внутри стоит вызов get_template_part(), который подключает блок контента. Тема должна передать управление WooCommerce, вызвать wc_get_template_part('content', 'single-product'), но некоторые темы этого не делают. Итог: вёрстка темы есть, кнопки нет.
Как исправить:
- Внешний вид → Редактор файлов темы. Подтвердите предупреждение WordPress.
- В правой колонке найдите файлы
single.phpиindex.php:

- Откройте
single.php(если есть). Если нет,index.php. - Найдите строку с
get_template_part. Замените весь блок вывода контента на:
1 if (is_singular('product')) { 2 wc_get_template_part('content', 'single-product'); 3 } else { 4 wc_get_template_part('content', get_post_format()); 5 }
- Сохраните файл.

Перед правкой сделайте бэкап файла темы. Скопируйте содержимое в блокнот или используйте дочернюю тему, прямая правка родительской темы сбросится при следующем обновлении.
После сохранения откройте страницу товара. Кнопка должна появиться.
5. Серверная проблема, mod_security режет скрипты
Если вы дошли досюда и кнопки всё ещё нет, причина, скорее всего, на стороне сервера. Модуль mod_security (межсетевой экран Apache/LiteSpeed) блокирует загрузку JavaScript-файлов WooCommerce. Без JavaScript корзина не работает.
Диагностика:
- Откройте страницу проблемного товара.
- Нажмите
F12→ вкладка Console (Консоль). - Ищите ошибку загрузки скрипта WooCommerce, обычно
cart.min.js,add-to-cart.min.jsилиjquery.blockUI.min.jsс кодом403 Forbidden. - Увидели, проблема в mod_security.
Решение: свяжитесь с хостинг-провайдером и попросите добавить исключение для URL-пути /wp-content/plugins/woocommerce/ в правилах mod_security. Техподдержка делает это за несколько минут.
Альтернативно, отключите mod_security для домена через .htaccess (если хостинг разрешает):
1 <IfModule mod_security.c> 2 SecFilterEngine Off 3 SecFilterScanPOST Off 4 </IfModule>
Но лучше согласовать с хостером: на shared-хостингах mod_security защищает весь сервер, и его отключение создаёт риск для безопасности.
Сводная таблица: что проверять
Проблема | Симптом | Время на исправление |
|---|---|---|
Карточка товара не заполнена | Кнопки нет у конкретного товара | 2 мин |
Конфликт плагинов | Кнопка пропала после установки нового плагина | 5-15 мин |
Настройщик темы | Кнопки нет на всех товарах, тема с ThemeForest | 1 мин |
Код шаблона | Кнопки нет, тема кастомная или малоизвестная | 5 мин |
mod_security | Ошибка JS в консоли (403) | Звонок хостеру |
Подробный видеогайд по всем пяти шагам, от карточки товара до правки шаблона и серверной диагностики.
⁉️🤔 Частые вопросы
Кнопка исчезла только у вариативных товаров, в чём дело?
Почти наверняка не заполнены цены вариаций. Откройте товар, вкладка «Вариации», раскройте каждую, поле «Цена» должно быть заполнено. Пустая цена вариации означает, что WooCommerce считает товар «не для продажи» и убирает кнопку. Для 50 и более вариаций используйте импорт CSV: Товары → Импорт.
После обновления темы кнопка пропала, что делать?
Обновление темы перезаписало
single.php. Верните правку из шага 4. Чтобы не повторять при каждом обновлении, вынесите шаблон в дочернюю тему: создайте папку/woocommerce/в дочерней теме и скопируйте туда исправленныйsingle-product.php.
Можно ли восстановить кнопку без правки кода?
Да, в половине случаев: проверьте карточку товара (шаг 1) и настройщик темы (шаг 3). Код нужен только когда тема нестандартно выводит шаблон товара или когда плагин либо тема глушат хук
woocommerce_show_variation_price.
Кнопка есть, но не работает, нажимаешь и ничего не происходит?
Это JavaScript-ошибка. Откройте консоль браузера (
F12) и посмотрите, какие скрипты падают. Чаще всего, конфликт jQuery-версий (тема подключает старую jQuery поверх штатной WordPress) либо кешированный минифицированный JS не обновился. Сбросьте кеш плагина кеширования и перегенерируйте минифицированные скрипты.
Нужно ли отключать AJAX-добавление в корзину?
Только для диагностики. Зайдите в WooCommerce → Настройки → Товары и снимите галку «Включить AJAX-добавление в корзину». Если после этого кнопка появилась, проблема в AJAX-обработчике конкретной темы. Оставьте AJAX выключенным или замените тему.
Что делать, если кнопка так и не появилась
Пять шагов выше закрывают подавляющее большинство случаев пропажи кнопки «В корзину». Если ни один не сработал, проблема глубже и требует ручной отладки.
Быстрый чек-лист последнего шанса:
- Смените тему на Storefront, официальную WooCommerce-тему. Кнопка появилась? Проблема в вашей теме.
- Проверьте WooCommerce → Статус → Запланированные действия, нет ли зависших cron-задач.
- Зайдите в WooCommerce → Статус → Логи и поищите
fatal-errorsза последние дни.
Не помогло, опишите ситуацию в комментариях: версия WooCommerce, название темы, список активных плагинов. Найдём причину.



