2017-07-19 49 views
0

驗證我正在使用的functions.php下面的代碼來驗證表單提交與谷歌的驗證碼WooCommerce用戶登記表與谷歌的驗證碼

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

它工作得很好。問題是我只想在顯示錶單的頁面之一上驗證表單。例如,它被用在哪裏的ReCaptcha顯示與下面的代碼woocommerce /我的帳戶/形式的login.php:

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

我不想驗證任何其他網頁上的表格。

回答

0

轉到WP-內容 - >插件 - > woocommerce->模板 - >我的帳戶文件夾,並將表單的login.php文件到 「你 - 兒童主題文件夾」 - > woocommerce - >我的帳戶

現在你可以編輯這個模板,打開form-login.php文件,把下面這兩行放在你想要顯示驗證碼的地方

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