Woocommerce注册检查推荐代码是否有效

我希望在我的woocommerce注册表单中添加一个检查,以检查是否存在引用代码,即在后端设置为自定义字段(转发器)。 它目前设置有高级自定义字段,并在选项页面上设置。 它应检查代码是否在转发器字段中,否则拒绝注册。 然后需要将代码添加到用户并显示在用户后端中。

我试图在注册时操纵条款和条件代码,但没有任何地方。 谢谢

这是我的ACF代码,用于获取有效的validation代码。

 

这是做到这一点的方法:

1)添加推荐注册字段

 add_action( 'woocommerce_register_form', 'add_referral_registration_field', 20 ); function add_referral_registration_field() { ?> 

2)validation(或检查)推荐注册字段......

在这里,您将添加转发器字段代码以检查此引用代码

 add_action( 'woocommerce_register_post', 'referral_registration_field_validation', 20, 3 ); function referral_registration_field_validation( $username, $email, $validation_errors ) { $domain = 'woocommerce'; $error = '' . __( 'Error', $domain ) . ': '; // HERE you get the array of referral codes (to be replaced with ACF code) $referral_codes_to_check = array("ABCABC","DEFDEF"); if ( isset( $_POST['referralcode'] ) && empty( $_POST['referralcode'] ) ) { $validation_errors->add( 'referralcode_error', $error . __( 'Referral code is required!', $domain ) ); } // HERE BELOW we check the referral code elseif( ! in_array( $_POST['referralcode'], $referral_codes_to_check ) ) { $validation_errors->add( 'referralcode_error', $error . __( 'This referral code is not valid, please try something else…', $domain ) ); } } 

3)保存推荐现场数据

 add_action('woocommerce_created_customer', 'save_referral_registration_field_data', 20, 1 ); function save_referral_registration_field_data( $customer_id ) { // Referral code field if ( isset( $_POST['referralcode'] ) ) update_user_meta( $customer_id, 'referralcode', sanitize_text_field( $_POST['referralcode'] ) ); } 

代码位于活动子主题(或活动主题)的function.php文件中。 经过测试和工作。

在此处输入图像描述

在此处输入图像描述


如果您希望在编辑用户帐户表单中显示字段(并更新字段):

1)编辑推荐注册字段:

 add_action( 'woocommerce_edit_account_form', 'edit_referral_registration_field', 20 ); function edit_referral_registration_field() { $user = wp_get_current_user(); ?> 

2)更新推荐注册字段:

 add_action( 'woocommerce_save_account_details', 'save_referral_registration_field', 20, 1 ); function save_favorite_color_account_details( $user_id ) { if( isset( $_POST['referralcode'] ) ) update_user_meta( $user_id, 'referralcode', sanitize_text_field( $_POST['referralcode'] ) ); } 

代码位于活动子主题(或活动主题)的function.php文件中。 经过测试和工作。

在此处输入图像描述