📜  如何将 recaptcha 添加到 woocommerce 注册 php (1)

📅  最后修改于: 2023-12-03 14:53:02.523000             🧑  作者: Mango

如何将 Recaptcha 添加到 WooCommerce 注册 PHP

在 WooCommerce 注册表单中添加 reCAPTCHA 提供了额外的安全层,以防止自动化机器人注册。下面是将 reCAPTCHA 添加到 WooCommerce 注册表单的步骤。

步骤 1: 获取 reCAPTCHA 网站密钥

首先,您需要获取 reCAPTCHA 的网站密钥。请按照以下步骤执行:

  1. 访问 Google reCAPTCHA 网站
  2. 单击 "获取 reCAPTCHA" 按钮。
  3. 输入您的网站名称,并选择 reCAPTCHA 类型(v2 或 v3)。
  4. 在 "域名" 字段中输入您的网站域名。
  5. 接受服务条款,并单击 "提交" 按钮。
  6. 在下一页上,你将会找到 "站点密钥" 和 "密钥"。请复制这些密钥,因为您稍后需要使用它们。
步骤 2: 修改 WooCommerce 注册表单

以下是将 reCAPTCHA 添加到 WooCommerce 注册表单的 PHP 代码片段:

// 添加 reCAPTCHA 到 WooCommerce 注册页面
function add_recaptcha_to_woocommerce_register_form() {
   ?>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
    <?php
}
add_action( 'woocommerce_register_form', 'add_recaptcha_to_woocommerce_register_form' );

// 验证 reCAPTCHA
function validate_woocommerce_registration_recaptcha( $errors, $username, $email ) {
    $recaptcha_response = $_POST['g-recaptcha-response'];
    $secret_key = 'YOUR_SECRET_KEY';
    $verify_url = 'https://www.google.com/recaptcha/api/siteverify';

    $data = array(
        'secret' => $secret_key,
        'response' => $recaptcha_response
    );

    $args = array(
        'body' => $data,
        'timeout' => '5',
        'sslverify' => true
    );

    $response = wp_remote_post( $verify_url, $args );
    $response_body = wp_remote_retrieve_body( $response );
  
    $response_data = json_decode( $response_body, true );

    if ( ! $response_data['success'] ) {
        $errors->add( 'recaptcha_error', __( '<strong>错误</strong>: 请验证 reCAPTCHA。' ) );
    }

    return $errors;
}
add_filter( 'woocommerce_registration_errors', 'validate_woocommerce_registration_recaptcha', 10, 3 );

请将 YOUR_SITE_KEY 替换为您的 reCAPTCHA 网站密钥中的 "站点密钥",将 YOUR_SECRET_KEY 替换为 "密钥"。

步骤 3: 在主题中添加代码

打开 Woocommerce 主题的 functions.php 文件,并将以上代码片段粘贴到文件中。

保存文件后,重新加载 WooCommerce 注册页面,您应该能够看到 reCAPTCHA 附加在注册表单下方。此时,用户将需要完成 reCAPTCHA 验证才能成功注册。

希望以上步骤对您有所帮助!