2014-12-15 3 views
2

Мне нужно использовать новую карту регистрации «no Captcha» Google на открытой странице регистрации Woocommerce.Woocommerce - Как добавить новую регистрационную форму «no Captcha» Google в регистрационную форму для входа

я вставил следующий код перед </HEAD> тэгом:

<script src='https://www.google.com/recaptcha/api.js'></script> 

и этот внутри вкладки формы в файле "WooCommerce \ MyAccount \ форм-login.php":

<div class="g-recaptcha" data-sitekey="xxxxxxxxx MY ID xxxxxxxxx"></div> 

где, очевидно, «xxxxxxxxx MY ID xxxxxxxxx» - это мой идентификатор кода google.

Он показывает новую папку captcha, но если я попытаюсь зарегистрировать нового пользователя без проверки captcha, он не прекратит процесс регистрации и не завершит регистрацию без ошибок.

ответ

5

Прошло некоторое время с тех пор, как Стимарт открыл этот вопрос, но я приведу здесь свое предложение на случай, если кому-то это понадобится.

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. ;)

Надеюсь, что это поможет. :)

+1

Спасибо за это, плагины не работали для меня, но это было сделано. Однако у вас был один вопрос с вашим кодом, он не собирал детали сообщений google google, я изменил «ответ» => $ response' на ''response' => $ _POST ['g-recaptcha-response'] 'и это сработало. – Matt

+0

Хороший улов Мэтт, спасибо вам большое. :) Я обновил свой код. – tiomno

Смежные вопросы