繁体   English   中英

Wordpress插件开发:is_user_logged_in返回false

[英]Wordpress plugindevelopment:is_user_logged_in return false

我正在开发一个用于管理用户登录的插件。在我的自定义登录表单中,提交凭据后,我运行以下代码:

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,即使用户刚刚登录也是如此。

PS我正在localhost上,并且使用短代码在页面中调用登录表单。

谢谢

好的,从评论中我认为这是正在发生的事情。 您的插件login.php文件在每次请求时都被调用,您说过该调用logout()函数,因此每次都将用户注销。

您需要在用户触发的操作上调用logout()函数,例如单击注销按钮或在您施加的某些条件下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM