
🛡 Защита чекаута WooCommerce: 2 способа добавить CAPTCHA за 15 минут
Спам-заказы, боты в корзине и фальшивые регистрации, через это проходит каждый магазин на WooCommerce. Чистить базу от мусорных заказов вручную никто не хочет, а каждый десятый лид от бота — это потерянное время и деньги.
CAPTCHA решает проблему за 10 минут настройки. Без плагинов-комбайнов, без правки ядра.
Ниже, два рабочих способа добавить проверку на чекаут: через бесплатный плагин и через код в functions.php. Плюс бонус: защита страницы входа за те же 5 минут.
Что такое CAPTCHA и зачем она на чекауте
💡 Быстрый обзор:
- Что такое CAPTCHA и какие типы бывают, коротко, без теории ради теории
- Два способа установки: через бесплатный плагин
reCAPTCHA for WooCommerceи через код - Бонус: CAPTCHA на странице входа в админку, защита от брутфорса
- Типичные ошибки при настройке и как их избежать
CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) — это тест, который отличает живого посетителя от бота. Пользователь ставит галочку «Я не робот», решает простую картинку или головоломку, и только после этого форма отправляется. Бот такое не проходит: ему нужно понять задачу, которой он не обучен.
Для WooCommerce-магазина CAPTCHA на чекауте, не прихоть, а необходимость. Спам-боты умеют заполнять поля оформления заказа и нажимать «Отправить»: владелец получает десятки пустых заказов, которые висят в админке и забивают CRM. Реальный кейс: после включения reCAPTCHA на тестовом сайте количество фальшивых заказов упало до нуля за сутки, без фильтров, без банов по IP, без правки .htaccess.
Шесть основных типов CAPTCHA: текстовая (искажённые буквы и цифры), аудио (для людей с нарушениями зрения), математическая (простые примеры вроде «3 + 4»), графическая (выбрать все картинки со светофором), головоломка (перетащить пазл) и невидимая (reCAPTCHA v3, работает в фоне, анализирует поведение пользователя). Для магазина лучше всего подходит reCAPTCHA v2 (checkbox) или невидимая v3, они не бесят покупателей и при этом отсекают подавляющее большинство ботов.
Обзор плагинов: что ставить на WooCommerce
На рынке три основных плагина, которые закрывают задачу. Разберём коротко, какой подо что.
reCAPTCHA for WooCommerce (RelyWP)

Бесплатный, без премиум-версии вообще. Поддерживает reCAPTCHA v2 на чекауте, странице входа, регистрации и сбросе пароля. 40 000+ активных установок, рейтинг 4,5 на WordPress.org. Ставится за минуту: API-ключи Google → отметить галочками формы → готово. Минус: только v2, v3 не поддерживается, если нужна невидимая проверка, смотрите альтернативы.
Advanced Google reCAPTCHA (WebFactory)

200 000+ установок, рейтинг 4,8 на WordPress.org. Закрывает чекаут WooCommerce, Easy Digital Downloads, BuddyPress и стандартные формы WordPress. Поддерживает v2 и v3, есть математическая капча как fallback. Бесплатная версия покрывает 90% задач; PRO-версия добавляет блокировку по странам. Из нюансов: интерфейс на любителя (вкладки старого дизайна), а в отзывах периодически всплывают конфликты с кастомными темами.
reCaptcha by BestWebSoft

Бесплатная версия + премиум за $24 в год. v2, v3 и enterprise-режим. Настройка размера и расположения виджета, мультиязычность, RTL. Минус: привязка к Google-сервисам, для проектов под GDPR может быть критично. Но как рабочий инструмент, надёжен, проверен на десятках live-проектов.
Способ 1: CAPTCHA через плагин (без кода)
Самый простой путь. Берём reCAPTCHA for WooCommerce, он бесплатный, лёгкий и не требует танцев с бубном.
Шаг 1: Установка и активация
Заходим в админку WordPress: Plugins → Add New. В строке поиска вводим recaptcha for woo.

Нашли, нажимаем Install Now, ждём пару секунд и активируем.

После активации в меню Settings появится пункт reCAPTCHA WooCommerce.

Шаг 2: API-ключи Google
Заходим на страницу создания reCAPTCHA-ключей. Заполняем:
- Label, любое имя (например, «Мой магазин»)
- reCAPTCHA type, v2 («I'm not a robot» Checkbox)
- Domains, домен магазина без
https://

Жмём Submit, система выдаст Site Key и Secret Key.

Шаг 3: Настройка плагина
Копируем ключи и вставляем в поля плагина: Settings → reCAPTCHA WooCommerce.

Прокручиваем ниже, секция WooCommerce Forms. Отмечаем галочкой WooCommerce Checkout (и Login/Register, если нужно защитить вход).

Сохраняем изменения.
Шаг 4: Проверка
На той же странице настроек есть кнопка Test API Response. Нажимаем, если ключи верные, увидим зелёный статус.

Готово. Теперь на странице чекаута перед кнопкой «Оформить заказ» будет капча. Проверьте в режиме инкогнито, бот-тест должен появиться.

Способ 2: CAPTCHA через код (без лишних плагинов)
Если не хотите ставить ещё один плагин, вот сниппет, который добавляет reCAPTCHA на чекаут через functions.php.
Шаг 1: Подготовка
Перед правкой кода сделайте полный бэкап сайта. Редактируем файл functions.php дочерней темы или используем плагин Code Snippets, он безопаснее: ошибка в коде не положит сайт, сниппет просто отключится.
Шаг 2: Код
Ниже, две функции PHP. Первая выводит reCAPTCHA-виджет на чекауте, вторая, проверяет ответ Google при отправке заказа.
1 /** 2 * Вывод reCAPTCHA на странице чекаута WooCommerce 3 */ 4 function doublee_show_me_the_checkout_captcha($checkout) { 5 echo '<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>'; 6 } 7 add_action('woocommerce_checkout_order_review', 'doublee_show_me_the_checkout_captcha', 18); 8 9 /** 10 * Проверка ответа reCAPTCHA при оформлении заказа 11 */ 12 function doublee_process_recaptcha() { 13 $postdata = $_POST['g-recaptcha-response']; 14 $verified_recaptcha = file_get_contents( 15 'https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=' . $postdata 16 ); 17 $response = json_decode($verified_recaptcha); 18 if (!$response->success) { 19 wc_add_notice('Please verify that you are not a robot', 'error'); 20 } 21 } 22 add_action('woocommerce_checkout_process', 'doublee_process_recaptcha');
Что здесь происходит:
woocommerce_checkout_order_review, хук, который срабатывает при выводе блока заказа на чекауте. На него вешаем вывод<div>с data-атрибутомdata-sitekey(тот самый Site Key из консоли Google).woocommerce_checkout_process, хук валидации при отправке заказа. Функция отправляет ответ капчи на сервер Google черезsiteverify-эндпоинт, декодирует JSON и, если проверка не пройдена, добавляет ошибку черезwc_add_notice(), штатный механизм WooCommerce.- Если на хостинге отключена
allow_url_fopen(функцияfile_get_contentsдля URL не работает), замените её наwp_remote_get(), он работает через cURL и не зависит от php.ini.
Шаг 3: Вставка и проверка
Добавьте код через Code Snippets или в functions.php дочерней темы, сохраните.

После сохранения зайдите на страницу чекаута в режиме инкогнито, должен появиться reCAPTCHA-виджет. Попробуйте отправить заказ без галочки: появится ошибка «Please verify that you are not a robot».
Бонус: CAPTCHA на странице входа
Чекаут, не единственная болевая точка. Брутфорс-атаки по /wp-login.php и /my-account/ идут круглосуточно, даже на небольших магазинах. Те же reCAPTCHA for WooCommerce закрывают логин-форму парой кликов.
Заходим в Settings → reCAPTCHA WooCommerce, секция WooCommerce Forms, и включаем Login:

Сохранили, и /my-account/ защищён. Если нужно закрыть ещё и /wp-login.php, этот же плагин поддерживает WordPress-формы: та же логика, галочка WordPress Login Form.
Типичные проблемы и как их решить
- Капча не появляется на чекауте. Проверьте ключи: Site Key и Secret Key должны быть от v2 («I'm not a robot» Checkbox), не от v3. При несовпадении версии виджет просто не рендерится.
- Капча отображается дважды. Скорее всего, у вас активны два плагина с reCAPTCHA одновременно (например, один в теме, другой, отдельно). Отключите дубликат.
- Ошибка «Invalid key» при тесте API. Либо опечатка при копировании ключей, либо ключи созданы под другой домен. Пересоздайте ключи и проверьте домен в консоли Google.
- Конфликт с кастомным шаблоном чекаута. Переключитесь на стандартную тему (Storefront) и проверьте, если капча появилась, проблема в хуках вашей темы. Решение: кастомный хук в коде (Способ 2) с привязкой к вашему шаблону.
- Чекаут не грузится после включения CAPTCHA. Очистите кеш (плагин + браузер), отключите минификацию JS на время теста, конфликты чаще всего из-за агрессивной оптимизации скриптов.
- Покупатели жалуются, что капча отклоняет реальных людей. Снизьте чувствительность в настройках reCAPTCHA или перейдите на v2 Checkbox, он мягче v3 и не блокирует по «подозрительной» поведенческой модели.
⁉️🤔 Частые вопросы
Нужна ли CAPTCHA на чекауте, если уже стоит антиспам-плагин?
Антиспам-плагины типа Akismet защищают комментарии и формы обратной связи, но не чекаут WooCommerce. Боты для фальшивых заказов обходят стандартные фильтры, им не нужны поля комментариев, они заполняют именно форму оформления. CAPTCHA закрывает эту дыру.
Какую версию reCAPTCHA выбрать, v2 или v3?
Для магазина мы советуем v2 Checkbox: посетитель ставит одну галочку, и заказ уходит. v3 работает в фоне и может заблокировать реального покупателя, если его поведенческая модель покажется системе «подозрительной», а на чекауте каждый клиент на счету.
Можно ли защитить капчей только гостевой чекаут, а залогиненных пользователей пропускать?
Да. В плагине
reCAPTCHA for WooCommerceгалочка WooCommerce Checkout включает капчу для всех. Чтобы пропускать залогиненных, придётся добавить условие в код (Способ 2): обернуть хук вif (!is_user_logged_in()). Без кода, только плагинами с условной логикой типа Advanced Google reCAPTCHA PRO.
Влияет ли CAPTCHA на скорость загрузки чекаута?
Заметно, нет. Скрипт reCAPTCHA грузится асинхронно и только на тех страницах, где форма реально выводится. Никакой лишней нагрузки на весь сайт. На практике разница в скорости чекаута до и после, в пределах 100-200 мс.
Итоги
Добавить CAPTCHA на чекаут WooCommerce, задача на 15 минут, а эффект, чистый. Никаких спам-заказов, никакой ручной чистки базы, никаких ботов в воронке.
Если не хотите ставить лишние плагины, берите второй способ с кодом. Он добавляет ровно две функции в functions.php и не требует обновлений. Если предпочитаете «поставил и забыл», reCAPTCHA for WooCommerce: бесплатный, 40 тысяч установок, живые обновления и поддержка Block Checkout из коробки.
Проверьте, что капча работает на всех устройствах: откройте чекаут с телефона и с десктопа в режиме инкогнито. Если на мобильном виджет съезжает, поправьте CSS-контейнер или переключите размер виджета на Compact в консоли Google reCAPTCHA. Пять минут теста сейчас сэкономят часы разгребания спам-заказов потом.



