WooCommerce用户使用Google的reCaptcha注册表单验证

时间:2017-07-19 08:58:46

标签: php wordpress woocommerce recaptcha user-registration

我在functions.php中使用以下代码来验证使用Google的reCaptcha提交表单

function adv_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'   => '#####################',
            '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'] )
        {
            $wpErrors->add( 'recaptcha', __( 'Error message', 'woocommerce' ) );
        }
    }
}
add_action( 'woocommerce_register_post', 'adv_validate_re_captcha_field', 10, 3 );

工作得很好。问题是我只想在显示表单的其中一个页面上验证表单。例如,它在woocommerce / myaccount / form-login.php上使用,其中reCaptcha显示如下:

<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="###"></div>

我不想在任何其他页面上验证表单。

1 个答案:

答案 0 :(得分:0)

转到wp-content - &gt;插件 - &gt; woocommerce-&GT;模板 - &gt;将myaccount文件夹和copy-login.php文件复制到“you-child-theme-folder” - &gt; woocommerce - &gt;我的帐户

现在您可以编辑此模板,打开form-login.php文件并将这两行放在您希望显示验证码的位置下面

<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="###"></div>