我正在尝试仅使用电子邮件登录用户(使用另一个系统的 API 检查密码)。问题是我的所有代码都在运行,除了自动登录的部分,下面是我的功能:
我已经尝试过在线提供的不同功能,但是下面的代码发生了什么:
1-它会让用户登录,但在刷新或进入任何需要用户登录的页面后,wordpress 会注销用户。
function auth_new_user($username){
if(!username_exists($username)) {
// Generate the password and create the user
$password = wp_generate_password( 12, false );
$user_id = wp_create_user( $username, $password, $username );
// Set the nickname
wp_update_user(
array(
'ID' => $user_id,
'nickname' => $username
)
);
// Set the role
$user = new WP_User( $user_id );
$user->set_role( 'Subscriber' );
auto_login_usr($user_id,$username);
} // end if
else{
$the_user = get_user_by('email', $username);
$user_id = $the_user->ID;
echo $user_id;
auto_login_usr($user_id,$username);
}
}
function auto_login_usr($user_id, $username) {
$user = get_user_by( 'id', $user_id );
echo $user->user_login;
echo $user->password;
if( $user ) {
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id ,false, is_ssl());
do_action( 'wp_login', $user->user_login );
}
}
登录后,WordPress 会自动将用户注销(让用户保持登录状态)。请注意,我不止一次地调试了代码,并且一切都正确显示(用户 ID、用户登录和用户名)。
感谢你的帮助。