Введение
Популярная проблема — когда через форму обратной связи на сайте массово отправляется СПАМ.
При массовом СПАМе попробуй разберись, где сообщения от реальных людей, а где — от ботов. Особенно, когда сообщений тысячи. Это может привести к издержкам и потере денег для бизнеса.
Один из способов защиты — установка капчи на формы отправки сообщений и регистрации. О нем мы и поговорим.
Классическая капча с вводом текста сегодня почти бесполезна — нейросети их считывают и понимают. Поэтому нужны современные решения. Например: Google ReCaptcha и Yandex Smart Captcha. Если ваш бизнес работает с лицами из России — то оптимально использовать капчу Яндекса. Если нет — то капчу Google.
Пример установки капчи Google я показывал в этой статье про Contact Form 7, там все намного проще. Здесь-же мы поговорим про установку решения от Яндекса для форм, работающих на Contact Form 7, а также добавим капчу на форму регистрации пользователей WordPress и WooCommerce.
Практика
Регистрация и подготовка
Сначала нужно создать саму капчу. Для этого переходим в консоль Яндекс Cloud — https://console.yandex.cloud/
Если вы не авторизованы в яндексе — вам нужно авторизоваться.
Далее нужно создать облако. Для этого нажимаем на эту кнопку из скриншота:
В открывшейся форме указываем название облака и организацию.
У меня уже создан платежный аккаунт. Если у вас его нет — то нужно создать.
Далее нужно немного подождать, пока создается облако. Когда все будет готово — вам автоматически перебросит на страницу нового облака.
Теперь нужно перейти в каталог с именем default — на скриншоте выше у него зеленая иконка.
В открывшемся окне нужно найти сервис Yandex SmartCaptcha. Можно воспользоваться поиском как у меня на скриншоте.
Находим сервис и нажимаем на него.
Там у нас появится кнопка «Создать капчу». Нажимаем на неё.
У нас откроется такая форма
Здесь самое главное — указать имя капчи а также в поле «Список хостов» ввести адрес вашего сайте без https. Я для примера указал тестовый сайт cf7.feodoraxis1.ru
Остальные поля можно настраивать произвольно. Тут можно экспериментировать по-полной, но для конечной настройки в рамках урока это не важно. Поэтому пропустим их.
Далее нажимаем кнопку «Создать»
После создания нужно снова открыть эту капчу
И тут мы увидим два важных параметра: Ключ клиента и Ключ сервера:
Копируем их и сохраняем где-нибудь у себя на компьютере. Ключ сервера никому нельзя показывать.
На этом подготовительные работы завершены.
Установка на Contact Form 7
Для примера я создал стандартный сайт на WordPress и разместил на странице форму из CF7.
Дальнейшую работу будем вести в файле functions.php активной темы.
Так как на тесте используется тема из магазина тем WordPress — я создал и активировал дочернюю от нее тему и буду работать в файле functions.php из дочерней темы.
Теперь первым делом нужно подключить JS-скрипт яндекс капчи. Добавим в functions.php такой код:
<?php
//Добавим тег defer для подключаемых JS-скриптов - без этого не будет работать
add_filter( 'script_loader_tag', 'add_defer_tag_script', 1, 3 );
function add_defer_tag_script( $tag, $handle, $source ) {
$path = parse_url( $_SERVER['REQUEST_URI'] );
if ( strripos( $path['path'], 'wp-admin/' ) ) {
return $tag;
}
return str_replace( "\">", "\" defer>", $tag );
}
//Подключим JS-скрипт яндекс капчи
add_action( 'wp_enqueue_scripts', 'feodoraxis_enqueue_scripts', 100 );
function feodoraxis_enqueue_scripts() {
wp_enqueue_script(
'ya-smart-captcha',
'https://smartcaptcha.yandexcloud.net/captcha.js',
[],
'1.0'
);
}
Далее, в форму CF7 нужно добавить такой html-код
<div id="captcha-container" class="smart-captcha" data-sitekey="<ключ_клиента>" ></div>
Вместо «<ключ клиента>» подставляем наш Ключ клиента.
Чтобы вставить во все формы сразу такой код, можно использовать фильтр wpcf7_form_elements
<?php
//Зафиксируем публичный ключ в константе
define( "CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098" );
//Добавим контейнер во все формы CF7
add_filter( 'wpcf7_form_elements', 'feodoraxis_add_smart_captcha_container' );
function feodoraxis_add_smart_captcha_container( $replace ) {
$replace .= '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
return $replace;
}
Посмотрим, что получилось
Как видим, наш контейнер добавился, а в нем уже отобразилась капча. Мы уже многое сделали 🙂
Но пока капча не работает полноценно, и форма отправляет любые запросы — независимо от того, прошел юзер капчу или нет.
Чтобы капча заработала полноценно, необходимо добавить такой скрипт в файл functions.php
<?php
//Добавим секретный ключ
define( "SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897" );
//Опишем функцию проверки токена
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
/**
* Проверка токена перед отправкой. Если проверка не пройдет - то сообщение не будет отправлено
*
* @param bool $spam
*/
function feodoraxis_smart_captcha_check( $spam ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$spam = true;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$spam = true;
}
return $spam;
}
add_filter( 'wpcf7_spam', 'feodoraxis_smart_captcha_check', 100 );
В начале я пытался сделать валидацию через фильтр wpcf7_validate, потому что через него можно передать сообщение пользователю. Не получилось. Поэтому решил использовать фильтр спама.
Отлично! Мы добавили капчу в нашу форму!
Теперь СПАМ не пройдет! Пользователь тоже (шутка) 😀
А вот и весь код functions.php, который получился:
<?php
define( "CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098" );
define( "SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897" );
//Добавим тег defer для подключаемых JS-скриптов
add_filter( 'script_loader_tag', 'add_defer_tag_script', 1, 3 );
function add_defer_tag_script( $tag, $handle, $source ) {
$path = parse_url( $_SERVER['REQUEST_URI'] );
if ( strripos( $path['path'], 'wp-admin/' ) ) {
return $tag;
}
return str_replace( "\">", "\" defer>", $tag );
}
//Подключим JS-скрипт яндекс капчи
add_action( 'wp_enqueue_scripts', 'feodoraxis_enqueue_scripts', 100 );
function feodoraxis_enqueue_scripts() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер во все формы CF7
add_filter( 'wpcf7_form_elements', 'feodoraxis_add_smart_captcha_container' );
function feodoraxis_add_smart_captcha_container( $replace ) {
$replace .= '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
return $replace;
}
//Опишем функцию проверки токена
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
/**
* Проверка токена перед отправкой. Если проверка не пройдет - то сообщение не будет отправлено
*
* @param bool $spam
*/
function feodoraxis_smart_captcha_check( $spam ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$spam = true;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$spam = true;
}
return $spam;
}
add_filter( 'wpcf7_spam', 'feodoraxis_smart_captcha_check', 100 );
Установка на стандартную форму регистрации WordPress
Предположим, что на вашем сайте можно зарегистрироваться через стандартную форму. Значит нужно защитить свой сайт от регистрации ботов.
Для начала, как и в первый раз, добавим контейнер для яндекс капчи, в форму регистрации. Добавляем в functions.php такой код:
<?php
define( "CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098" );
//Подключим JS-скрипт яндекс капчи на страницу регистрации
add_action( 'login_footer', 'feodoraxis_enqueue_scripts_admin', 10 );
function feodoraxis_enqueue_scripts_admin() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер в форму регистрации
add_action( 'register_form', 'feodoraxis_add_smart_captcha_registration' );
function feodoraxis_add_smart_captcha_registration() {
echo '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
}
Если все сделать правильно, то у нас получится такая форма:
Теперь, как и в прошлый раз, при отправке формы, на бекенде нужно проверить, прошел пользователь капчу или нет. Добавим в functions.php следующий код:
<?php
define("SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897");
//Опишем функцию проверки токена - если она уже есть, то повторно ее описать не нужно
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
//Проверим токен перед самой регистрацией
add_filter( 'registration_errors', 'feodoraxis_smart_captcha_register_check' );
function feodoraxis_smart_captcha_register_check( $errors ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, токен капчи не найден" );
return $errors;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, мы не уверены, что вы человек :)" );
}
return $errors;
}
Отлично! Теперь на нашем сайте не получится зарегистрироваться без прохождения капчи 🙂
Листинг всего кода для защиты формы регистрации:
<?php
define("CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098");
define("SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897");
//Добавим тег defer для подключаемых JS-скриптов
add_filter( 'script_loader_tag', 'add_defer_tag_script', 1, 3 );
function add_defer_tag_script( $tag, $handle, $source ) {
$path = parse_url( $_SERVER['REQUEST_URI'] );
if ( strripos( $path['path'], 'wp-admin/' ) ) {
return $tag;
}
return str_replace( "\">", "\" defer>", $tag );
}
//Подключим JS-скрипт яндекс капчи на страницу регистрации
add_action( 'login_footer', 'feodoraxis_enqueue_scripts_admin', 10 );
function feodoraxis_enqueue_scripts_admin() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер в форму регистрации
add_action( 'register_form', 'feodoraxis_add_smart_captcha_registration' );
function feodoraxis_add_smart_captcha_registration() {
echo '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
}
//Опишем функцию проверки токена
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
//Проверим токен перед самой регистрацией
add_filter( 'registration_errors', 'feodoraxis_smart_captcha_register_check' );
/** @param WP_Error $errors */
function feodoraxis_smart_captcha_register_check( $errors ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, токен капчи не найден" );
return $errors;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, мы не уверены, что вы человек :)" );
}
return $errors;
}
Защита формы регистрации WooCommerce
Когда сайт работает с WooCommerce — появляется новый путь для регистрации, который тоже нужно защищать. Здесь все также просто как с обычной регистрацией WordPress, так что в детали вдаваться не буду.
Выведем капчу в форме
<?php
define("CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098");
//Добавим тег defer для подключаемых JS-скриптов
add_filter( 'script_loader_tag', 'add_defer_tag_script', 1, 3 );
function add_defer_tag_script( $tag, $handle, $source ) {
$path = parse_url( $_SERVER['REQUEST_URI'] );
if ( strripos( $path['path'], 'wp-admin/' ) ) {
return $tag;
}
return str_replace( "\">", "\" defer>", $tag );
}
//Подключим JS-скрипт яндекс капчи
add_action( 'wp_enqueue_scripts', 'feodoraxis_enqueue_scripts', 100 );
function feodoraxis_enqueue_scripts() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер в форму регистрации WooCommerce
add_action( 'woocommerce_register_form_end', 'feodoraxis_add_ya_captcha_container_woocommerce' );
function feodoraxis_add_ya_captcha_container_woocommerce() {
echo '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
}
Проверим капчу на бекенде при отправке формы
<?php
define( "SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897" );
//Опишем функцию проверки токена - если она уже есть, то повторно ее описать не нужно
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array( $curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
/**
* Валидация капчи при попытке регистрации WooCommerce
*
* @param WP_Error $validation_error
*/
function feodoraxis_woocommerce_yandex_captcha_check( $validation_error ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$validation_error->add( 'smart_captcha_validation_fail', 'Валидация не пройдена' );
return;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$validation_error->add( 'smart_captcha_validation_fail', 'Валидация не пройдена' );
}
return $validation_error;
}
add_filter( 'woocommerce_process_registration_errors', 'feodoraxis_woocommerce_yandex_captcha_check', 10 );
Подитог
Теперь вы умеете защищать свои формы от СПАМа с помощью яндекс смарт капчи.
Надеюсь, статья была вам полезна. Если это так — пишите комментарии, подписывайтесь на мои социальные сети и делитесь этой статьёй с друзьями.
Мои социальные сети:
https://vk.com/feodoraxis_club
https://www.youtube.com/@feodoraxis
Желаю вам успехов! 🙂
Листинг всего кода, представленного в статье:
<?php
define( "CLIENT_KEY", "ysc1_YIrsc28ZIwCNtdzCF6WbOax3XTMtHl1S8MZsbrXf30e89098" );
define( "SERVER_KEY", "ysc2_YIrsc28ZIwCNtdzCF6WbijyIbqngEOt0gUnavHEYfdcdc897" );
//Добавим тег defer для подключаемых JS-скриптов
add_filter( 'script_loader_tag', 'add_defer_tag_script', 1, 3 );
function add_defer_tag_script( $tag, $handle, $source ) {
$path = parse_url( $_SERVER['REQUEST_URI'] );
if ( strripos( $path['path'], 'wp-admin/' ) ) {
return $tag;
}
return str_replace( "\">", "\" defer>", $tag );
}
//Опишем функцию проверки токена
function token_validate( string $token ):bool {
$curl = curl_init();
curl_setopt_array( $curl, [
CURLOPT_URL => 'https://smartcaptcha.yandexcloud.net/validate?secret=' . SERVER_KEY . '&ip=' . $_SERVER['REMOTE_ADDR'] . '&token=' . $token,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
] );
$json_validation = curl_exec( $curl );
curl_close( $curl );
$response = json_decode( $json_validation, true );
if ( json_last_error() || $response['status'] !== 'ok' ) {
return false;
}
return true;
}
/**
* Защита CF7
*/
//Подключим JS-скрипт яндекс капчи в публичную часть сайта
add_action( 'wp_enqueue_scripts', 'feodoraxis_enqueue_scripts', 100 );
function feodoraxis_enqueue_scripts() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер во все формы CF7
add_filter( 'wpcf7_form_elements', 'feodoraxis_add_smart_captcha_container' );
function feodoraxis_add_smart_captcha_container( $replace ) {
$replace .= '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
return $replace;
}
/**
* Проверка токена перед отправкой. Если проверка не пройдет - то сообщение не будет отправлено
*
* @param bool $spam
*/
function feodoraxis_smart_captcha_check( $spam ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$spam = true;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$spam = true;
}
return $spam;
}
add_filter( 'wpcf7_spam', 'feodoraxis_smart_captcha_check', 100 );
/**
* Защита регистрации WordPress
*/
//Подключим JS-скрипт яндекс капчи на страницу регистрации
add_action( 'login_footer', 'feodoraxis_enqueue_scripts_admin', 10 );
function feodoraxis_enqueue_scripts_admin() {
wp_enqueue_script( 'ya-smart-captcha', 'https://smartcaptcha.yandexcloud.net/captcha.js', [], '1.0' );
}
//Добавим контейнер в форму регистрации
add_action( 'register_form', 'feodoraxis_add_smart_captcha_registration' );
function feodoraxis_add_smart_captcha_registration() {
echo '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
}
/**
* Проверим токен перед самой регистрацией
*
* @param WP_Error $errors
*/
function feodoraxis_smart_captcha_register_check( $errors ) {
if ( ! isset( $_POST['smart-token'] ) || empty( trim( $_POST['smart-token'] ) ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, токен капчи не найден" );
return $errors;
}
$smart_token = $_POST['smart-token'];
if ( ! token_validate( $smart_token ) ) {
$errors->add( "smartCaptcha invalid", "Ошибка, мы не уверены, что вы человек :)" );
}
return $errors;
}
add_filter( 'registration_errors', 'feodoraxis_smart_captcha_register_check' );
/**
* Защита регистрации WooCommerce
*/
//Добавим контейнер в форму регистрации WooCommerce
add_action( 'woocommerce_register_form_end', 'feodoraxis_add_ya_captcha_container_woocommerce' );
function feodoraxis_add_ya_captcha_container_woocommerce() {
echo '<div id="captcha-container" class="smart-captcha" data-sitekey="' . CLIENT_KEY . '" ></div>';
}
/**
* Валидация капчи при попытке регистрации WooCommerce
* Добавим ту-же функцию, что и для формы регистрации WordPress
*/
add_filter( 'woocommerce_process_registration_errors', 'feodoraxis_smart_captcha_register_check', 10 );