簡體   English   中英

如何從中將reCAPTCHA添加到Woocommerce供應商注冊

[英]How to add reCAPTCHA to Woocommerce vendors registration from

我注意到有關WooCommerce注冊的許多其他問題,但是沒有涉及WooCommerce供應商插件以及供應商如何在網站上注冊的其他問題。

研究使我可以添加其他字段,並且找到了一些示例reCAPTCHA 代碼。但是,為了使reCAPTCHA在WooCommerce供應商注冊頁面上可見,我缺少兩者之間的重要聯系。

是否可以通過在上面的示例代碼中執行類似的操作來加入wcpv_shortcode_registration_form_process

/**
 * Add reCapcha to the Vendor registration page 
 */

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( 'wcpv_shortcode_registration_form_process', 'wooc_validate_re_captcha_field', 10, 3 );

我的確確實嘗試過,但沒有成功。

非常感謝您提供的任何幫助。

為了使驗證碼在供應商注冊上可見,您需要在用於創建其他注冊表格的代碼之間添加一些javascript代碼行。

在此,在要在視圖中創建字段的函數之前,添加以下代碼:

vendors_reg_custom_field() { ?>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>

關閉PHP函數之前,添加:

<p class="form-row form-row-wide">
<div class="g-recaptcha" data-sitekey="YOUR-RECAPTCHA-SITE-KEY-HERE</div>
</p>
<?php 
}

這將使驗證碼可見。 干杯。

您可以在這里找到更多幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM