【发布时间】:2019-04-13 00:25:13
【问题描述】:
我在插件内部和简码函数内部使用wp_signon 来登录用户。为了澄清,短代码是从页面内容中调用的。 wp_signon 函数成功返回用户信息。但是is_user_logged_in() 正在返回 false。为什么会发生这种情况,或者我该如何设置 is_user_logged_in() true 以便用户保持登录状态?
ob_start();
$user_data = array();
$user_data['user_login'] = $username;
$user_data['user_password'] = $password;
$user_data['remember'] = $remember;
$user = wp_signon( $user_data, false );
ob_get_clean();
if ( is_wp_error($user) ) {
$err = $user->get_error_message();
} else {
$_SESSION['fc_user']=$user->ID;
var_dump($user); // gives the user info
var_dump(is_user_logged_in()); // gives false
}
【问题讨论】:
-
您的意思是用户不能在您的网站上保持登录状态?如果你想在这个网站上满足,$remember 需要 true。如果您的会话中没有任何数据,is_user_logged_in() 将不起作用。 wp_signon() 将处理您的会话。但是为什么在 else 条件下设置 $_SESSION['fc_user']?会议开始了吗?
-
@Faysal 是的,我确实使用 session_start() 开始了会话。
-
@FaysalHaque,我不明白您所说的“$remember 需要真实”是什么意思。但我尝试使用 wp_signon( $user_data, true );也是。还是不行。
-
你有没有把这段代码放在 after_setup_theme 钩子上调用的函数中,就像 here 解释的那样?
-
@d79 不,它在一个简码挂钩内,我需要在一个简码挂钩内。