WordPress添加自定义登录身份验证
我在注册时添加了自定义字段,允许用户输入自己的密码,还创建了代码来生成验证代码,然后通过电子邮件发送给用户。当然,用户需要单击电子邮件中的链接才能登录 这就是我被困的地方。我正在尝试添加我自己的身份验证,以在用户尝试登录时检查验证的状态 这是我的代码,它不起作用WordPress添加自定义登录身份验证,wordpress,authentication,Wordpress,Authentication,我在注册时添加了自定义字段,允许用户输入自己的密码,还创建了代码来生成验证代码,然后通过电子邮件发送给用户。当然,用户需要单击电子邮件中的链接才能登录 这就是我被困的地方。我正在尝试添加我自己的身份验证,以在用户尝试登录时检查验证的状态 这是我的代码,它不起作用 function check_validation_status($username) { $user = get_user_by('login', $username); $userID = $user->ID;
function check_validation_status($username) {
$user = get_user_by('login', $username);
$userID = $user->ID;
$status = get_user_meta($userID, 'verified', true);
if($status == '0') {
return;
}
}
add_action('wp_authenticate', 'check_validation_status');
不幸的是,这段代码似乎没有任何作用。我也尝试了以下不同的动作
function check_validation_status($username) {
$user = get_user_by('login', $username);
$userID = $user->ID;
$status = get_user_meta($userID, 'verified', true);
if($status == '0') {
wp_logout(); // works but doesn't show an error :(
}
}
add_action('wp_login', 'check_validation_status');
如果用户未经验证,此代码将直接成功地将其记录下来,但是它不会向用户显示任何形式的错误,用户只会直接被重定向回登录页面
让用户登录但直接退出似乎是一种草率的做法,有没有办法首先阻止登录?我现在已经设法解决了这个问题。相反,我需要连接到wp_authenticate_user并返回wp_错误。这是我的工作代码,我希望它能在将来帮助别人
function check_validation_status($user, $password) {
$userID = $user->ID;
$status = get_user_meta($userID, 'verified', true);
if($status == '0') {
$errors = new WP_Error();
$errors->add('title_error', __('<strong>ERROR</strong>: This account has not been verified.', 'podium'));
return $errors;
}
return $user;
}
add_action('wp_authenticate_user', 'check_validation_status', 10, 2);
我现在已经设法解决了这个问题。相反,我需要连接到wp_authenticate_user并返回wp_错误。这是我的工作代码,我希望它能在将来帮助别人
function check_validation_status($user, $password) {
$userID = $user->ID;
$status = get_user_meta($userID, 'verified', true);
if($status == '0') {
$errors = new WP_Error();
$errors->add('title_error', __('<strong>ERROR</strong>: This account has not been verified.', 'podium'));
return $errors;
}
return $user;
}
add_action('wp_authenticate_user', 'check_validation_status', 10, 2);