我正在开发一个用于管理用户登录的插件。 在我的自定义登录表单中,提交凭据后,我将运行以下代码:
if( isset( $_POST['login'] ) ){
$login = wp_signon( array(
'user_login' => $_POST['username'],
'user_password' => $_POST['password'],
'remember' => 'true'
), true);
if( is_wp_error( $login ) ){
echo $login->get_error_message();
} else {
$username = $_POST['username'];
wp_set_current_user( $login->ID, $_POST['username'] );
wp_set_auth_cookie( $login->ID );
do_action( 'wp_login', $username );
}//else
}//if
if( is_user_logged_in() ){ // is_user_logged_in()
?><a id="wp-submit" href="<?php echo esc_url( add_query_arg( array( 'ecofriends_logout' => true) ) ); ?>" title="Logout">Logout</a><?php
} else {
ecofriends_login_form();
}//else
因此,提交凭据后,它将登录。 如果未提交凭据,请检查用户是否已登录以显示注销链接,否则显示登录表单。
重要的事实是,is_user_logged_in()在这里工作正常。
在function.php文件中,我创建了一个用于管理注销的函数:
function logout(){
if( is_user_logged_in() ){
wp_logout();
}//if
}//ecofriends_logout
但是当我调用它时,is_user_logged_in()始终返回false,即使用户刚刚登录也是如此。
P.S。我在localhost上工作,并且使用短代码在页面中调用登录表单。
谢谢
答案 0 :(得分:0)
好吧,从评论中我认为这是正在发生的事情。您的插件login.php
文件在每次请求时都会被调用,您所说的调用logout()函数,因此每次都会注销用户。
您需要在用户触发的操作上调用logout()
函数,例如单击注销按钮或在您施加的某些条件下。