仅使用 wordpress 通过电子邮件自动登录用户
Autologin user by email only using wordpress
我正在尝试仅使用电子邮件登录用户(使用另一个系统的 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、User_login 和用户名)。
感谢您的帮助。
我自己修好了,headers已经发送了。我应该调用函数 after_theme_setup:
- 要么带钩子
- 或者在调用get_header函数之前
我正在尝试仅使用电子邮件登录用户(使用另一个系统的 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、User_login 和用户名)。
感谢您的帮助。
我自己修好了,headers已经发送了。我应该调用函数 after_theme_setup:
- 要么带钩子
- 或者在调用get_header函数之前