is_user_logged_in()在wp_signon后返回false
问题描述:
我正在使用自定义登录表单,这里是代码。成功登录后重定向到/门户页面,但在门户页面用户登录状态为false。is_user_logged_in()在wp_signon后返回false
$email = $_REQUEST['login_email'];
$password = $_REQUEST['login_password'];
$args = array(
'orderby' => 'login',
'order' => 'ASC',
'fields' => 'all'
);
$count=0;
$all_users = get_users($args);
$login_data['user_password'] = $password;
$login_data['user_login'] = $email;
$login_data['remember'] = true;
$user_verify = wp_signon($login_data, true);
$userID = $user_verify->ID;
do_action('wp_login', $email);
wp_set_current_user($userID, $email);
wp_set_auth_cookie($userID, true, false);
if (is_wp_error($user_verify)){
$loginerror = true;
$errors['login_error']=__("Error in login",'domain');
}
else{
$loginSuccess = true;
$_SESSION['login_email']=$email; // Initializing Session
if(empty($previous_location))
{
wp_safe_redirect(home_url('/portal/'));
}
else{
wp_safe_redirect($previous_location);
}
exit();
}
但/portal
页时,我var_dump(is_user_logged_in())
返回false。这里发生了什么?我做了什么?
答
我有同样的经历。原来我的自定义注册机制是错误的。我使用$wpdb
对象和插入方法添加了具有自定义sql查询的新用户。
不知何故,这种方法与后者wp_signon
的用法相冲突。如果您还写有自定义注册机制,请尝试回到wp_insert_user
方法,然后使用$wpdb->update
更新自定义列或任何内容。
我将我的网站托管在yourdomain.com/folder – Ninja
当您在wp-config.php中将WP_DEBUG设置为true时,是否会收到任何错误,警告信息 – tousif
完全没有。我没有错误。这是用cookie来实现的吗?在wp_sigon之后,我得到了用户详细信息,并且'is_user_logged_in()'在该页面中也是true,但是当我移动到其他页面的网站时,则is_user_logged_in()返回false – Ninja