← Назад к решениям
ПлагинPHPБесплатно

WP Captcha Guard

Плагин WordPress, отдающий капчу с чекбоксом и невидимую со скорингом за одним интерфейсом: любая форма рисует и проверяет одинаково, а смена версии - это настройка. Ассеты грузятся по страницам, а зависимости переименовываются на сборке, поэтому конфликт с другими плагинами невозможен.

WP Captcha Guard

Стек

PHPWordPressreCAPTCHAPHP-Scoper

Проблема

Публичные формы на сайте WordPress (обратная связь, регистрация, всё, что отдаёт работу на бэкенд) начинают собирать ботов ровно с момента индексации. Обычный ответ - по плагину капчи на каждую форму, и у этого ответа есть цена: несколько плагинов тянут каждый свою копию скрипта вендора, каждый рисует поле по-своему, а переход с чекбокса на невидимую версию со скорингом означает замену их всех.

Есть и более тонкий сбой. Библиотеки капчи везут свои зависимости, и когда два плагина упаковывают разные версии одной библиотеки, PHP загружает ту, что оказалась первой, а вторая ломается - класс ошибок, который вылезает только на бою и в чужом плагине.

До → После

ДоПосле
Отдельный плагин капчи на каждую формуОдин компонент, который рисует и проверяет любая форма
Переход v2 → v3 означал замену интеграцииВерсия - это настройка; обе реализуют один интерфейс
Каждый плагин грузит свою копию скрипта вендораСкрипт и стили регистрируются один раз и подключаются там, где нужны
Упакованные зависимости конфликтуют с другими плагинамиЗависимости переименовываются на сборке: конфликт невозможен
Логика проверки скопирована между формамиОдин путь проверки, одно место для правки

Как это работает

  1. Один интерфейс, две реализации. Капча с чекбоксом и невидимая со скорингом стоят за одним контрактом, поэтому вызывающий код рисует поле и проверяет ответ, не зная, какая версия настроена.
  2. Версия - это конфигурация. Переключение между ними - правка настроек, а не переписывание интеграции: имя поля и вызов проверки с обеих сторон остаются прежними.
  3. Ассеты грузятся там, где используются. Скрипты и стили регистрируются централизованно и подключаются только на страницах, где капча реально рисуется, поэтому защищённая страница контактов не облагает налогом весь остальной сайт.
  4. Зависимости переименовываются на сборке. Сборка добавляет префикс пространствам имён упакованных библиотек, поэтому копия общей библиотеки из этого плагина не может столкнуться с другой версией из соседнего - именно этот сбой заставляет плагины капчи воевать между собой.
  5. Формы подключаются добровольно. Любая форма, ядра, WooCommerce или своя, рисует поле и спрашивает вердикт при отправке; ничего не вшивается в формы, которые владелец сайта не выбирал.

Основные возможности

  • Капча с чекбоксом и невидимая со скорингом за одним интерфейсом
  • Версия переключается настройкой без правок кода интеграции
  • Централизованная регистрация скриптов и стилей с подключением по странице
  • Переименование пространств имён зависимостей на сборке - без конфликтов плагинов
  • Единый путь проверки, переиспользуемый из любой формы
  • Типизированный объект настроек вместо разбросанных констант

Установка

  1. Загрузите папку плагина в /wp-content/plugins/ и активируйте
  2. Введите site key и секрет из консоли провайдера капчи
  3. Выберите версию капчи - чекбокс или невидимая со скорингом
  4. Отрисуйте поле в своей форме и вызовите хелпер проверки при отправке
  5. Отправьте форму как обычный пользователь и убедитесь, что вердикт положительный

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок