强制用户在个人资料WordPress注册中填写姓名



我有一个关于WordPress功能的问题。我已经为我们的用户编写了这段代码,以便在注册后拥有元数据:


<?php
add_action( 'user_register', 'add_registered_user_cap', 10, 1 );
function add_registered_user_cap( $user_id ) {
$hasfname = get_user_meta($user_id, 'first_name', true);
$haslname = get_user_meta($user_id, 'last_name', true);
if($hasfname!=‘’ && $haslname!=‘’){
add_user_meta( $user_id, 'isverified', 1);
} else{
add_user_meta( $user_id, 'isverified', 0);
}
}
?>

之后,我想重定向所有用户编辑个人资料页面完成它,直到他们完全完成。因此,我有这样的代码:


<?php
if ( is_user_logged_in() ){
global $current_user;
get_currentuserinfo(); // wordpress global variable to fetch logged in user info
$userID = $current_user->ID; // logged in user's ID
$hasfname = get_user_meta($userID, 'first_name', true);
$haslname = get_user_meta($userID, 'last_name', true);
$isverified = get_user_meta($userID, 'isverified', true); // stores the value of logged in user's meta data for 'test'.
if( ($hasfname != '') && ($haslname != '') ){
update_user_meta( $userID, 'isverified', 1);
}
if( ($isverified == 0) && ( (home_url( $_SERVER['REQUEST_URI'] ) != wc_customer_edit_account_url()) ) ){
wp_redirect( wc_customer_edit_account_url() ); exit;
}
}
?>

但是当客人想在结账页面完成他/她的订单并付款时,它几乎会重定向他们,尽管他们会自动验证,因为他们已经在账单信息页面上输入了他们的名字和姓氏。谁有条件阻止此重定向并让用户支付订单?

问题是Woocommerce在结帐页面中填充了用户元billing_first_name,而不是first_name。

我认为最好的解决方案是控制user_meta billing_first_name.

另一点是Woocommerce在钩子user_register中填充这个user_meta。所以我认为你的验证过程应该在结帐时禁用。

最新更新