복붙노트

[WORDPRESS] Woocommerce 플러그인을위한 보안 문자 reCAPTCHA와 함께 작동하지 않는 WOOCOMMMERCE 체크 아웃

WORDPRESS

Woocommerce 플러그인을위한 보안 문자 reCAPTCHA와 함께 작동하지 않는 WOOCOMMMERCE 체크 아웃

해결법


  1. 1.플러그인은 체크 아웃 프로세스가 아닌 WooCommerce 등록 및 로그인을 보호하기 위해 작성되었습니다.

    플러그인은 체크 아웃 프로세스가 아닌 WooCommerce 등록 및 로그인을 보호하기 위해 작성되었습니다.

    체크 아웃 프로세스를 보호하기 위해, 나는 registration.php를 조정했다.

    class WC_Ncr_Registration_Captcha extends WC_Ncr_No_Captcha_Recaptcha {
    
    /** Initialize actions and filters */
    public static function initialize() {
    
        // initialize if login is activated
        if ( isset( self::$plugin_options['captcha_wc_registration'] ) || self::$plugin_options['captcha_wc_registration'] == 'yes' ) {
            // adds the captcha to the registration form
            add_action( 'register_form', array( __CLASS__, 'display_captcha' ) );
    
    
    
        }
    
    
            //added the following lines to the plugin
    
            add_action('woocommerce_after_checkout_billing_form', array( __CLASS__, 'display_captcha' ));
    
            add_action('woocommerce_checkout_process', array(
                __CLASS__,
                'validate_captcha_wc_checkout'
            ), 10, 3 );
     //added the previous lines to the plugin
    
    }
    
    
    /**
     * Verify the captcha answer
     *
     * @param $validation_errors
     * @param $username
     * @param $email
     *
     * @return WP_Error
     */
    public static function validate_captcha_wc_registration( $validation_errors, $username, $email ) {
        if ( ! isset( $_POST['g-recaptcha-response'] ) || ! self::captcha_wc_verification() ) {
            $validation_errors = new WP_Error( 'failed_verification', self::$error_message );
        }
    
        return $validation_errors;
    }
    
    
        //added the following lines to the plugin
    
        public static function validate_captcha_wc_checkout( $validation_errors, $username, $email ) {
        if ( ! isset( $_POST['g-recaptcha-response'] ) || ! self::captcha_wc_verification() ) {
            wc_add_notice(__( 'Please verify you are not a robot.' ), 'error' );
        }
    }
      //added the previous lines to the plugin
    
    
    }
    

  2. 2.함수에 추가하십시오 .php.

    함수에 추가하십시오 .php.

    function my_woocommerce_before_checkout_process() {
        remove_filter( 'woocommerce_registration_errors', array('WC_Ncr_Registration_Captcha', 'validate_captcha_wc_registration'), 10 );
    }
    add_action('woocommerce_before_checkout_process', 'my_woocommerce_before_checkout_process');
    
  3. from https://stackoverflow.com/questions/32197121/woocommerce-checkout-not-working-with-no-captcha-recaptcha-for-woocommerce-plugi by cc-by-sa and MIT license