0

我正在尝试仅使用电子邮件登录用户(使用另一个系统的 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、用户登录和用户名)。

感谢你的帮助。

4

1 回答 1

0

没关系,我自己修好了,标题已经发送了。我应该调用函数after_theme_setup:

  1. 要么用钩子
  2. 或者在调用 get_header 函数之前
于 2018-12-31T12:06:45.367 回答