Прошло некоторое время с тех пор, как Стимарт открыл этот вопрос, но я приведу здесь свое предложение на случай, если кому-то это понадобится.
Stimart здесь необходимо добавить PHP-код для проверки значения ответа reCaptcha, которое Google отправляет на страницу, когда пользователь устанавливает флажок reCaptcha, чтобы подтвердить, что они не являются роботом.
Трудный путь было бы написать что-то вроде этого в файле functions.php:
function wooc_validate_re_captcha_field($username, $email, $wpErrors)
{
$remoteIP = $_SERVER['REMOTE_ADDR'];
$recaptchaResponse = $_POST['g-recaptcha-response'];
$response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [
'body' => [
'secret' => 'PRIVATE KEY HERE !!!',
'response' => $recaptchaResponse,
'remoteip' => $remoteIP
]
]);
$response_code = wp_remote_retrieve_response_code($response);
$response_body = wp_remote_retrieve_body($response);
if ($response_code == 200)
{
$result = json_decode($response_body, true);
if (! $result['success'])
{
switch ($result['error-codes'])
{
case 'missing-input-secret':
case 'invalid-input-secret':
$wpErrors->add('recaptcha', __('<strong>ERROR</strong>: Invalid reCAPTCHA secret key.', 'woocommerce'));
break;
case 'missing-input-response' :
case 'invalid-input-response' :
$wpErrors->add('recaptcha', __('<strong>ERROR</strong>: Please check the box to prove that you are not a robot.', 'woocommerce'));
break;
default:
$wpErrors->add('recaptcha', __('<strong>ERROR</strong>: Something went wront validating the reCAPTCHA.', 'woocommerce'));
break;
}
}
}
else
{
$wpErrors->add('recaptcha_error', __('<strong>Error</strong>: Unable to reach the reCAPTCHA server.', 'woocommerce'));
}
}
add_action('woocommerce_register_post', 'wooc_validate_re_captcha_field', 10, 3);
Вы можете проверить эту статью http://www.themelocation.com/how-to-add-custom-fields-to-user-registration-form-in-woocommerce/ и путь этот плагин https://wordpress.org/plugins/theme-my-login/ справиться с этой проблемой.
или намного проще - это установить и настроить плагин как this one. ;)
Надеюсь, что это поможет. :)
Спасибо за это, плагины не работали для меня, но это было сделано. Однако у вас был один вопрос с вашим кодом, он не собирал детали сообщений google google, я изменил «ответ» => $ response' на ''response' => $ _POST ['g-recaptcha-response'] 'и это сработало. – Matt
Хороший улов Мэтт, спасибо вам большое. :) Я обновил свой код. – tiomno