簡體   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