繁体   English   中英

WordPress - 检查用户是否登录

[英]WordPress - Check if user is logged in

我对 WordPress 还很陌生。 在我的主页上,我有一个导航栏,我只想向以用户身份登录的人显示。

在我的header.php ,函数is_logged_in似乎不起作用。

我想在我的header.php文件中放置一个条件来检查用户是否已登录(然后显示导航)。

任何意见将是有益的。

使用is_user_logged_in函数:

if ( is_user_logged_in() ) {
   // your code for logged in user 
} else {
   // your code for logged out user 
}

尝试以下对我有用的代码

global $current_user;
get_currentuserinfo();

然后,使用以下代码检查用户是否已登录。

if ($current_user->ID == '') { 
    //show nothing to user
}
else { 
    //write code to show menu here
}

get_current_user_id()将返回当前用户 ID(整数),如果用户未登录,则返回 0。

if (get_current_user_id()) {
   // display navbar here
}

更多细节在这里get_current_user_id()

这个问题来自于Chrome的懒惰更新数据请求。 第一次进入主页。 带有空数据的 Chrome 请求。 然后你进入登录页面并登录。当你回到主页时Chrome懒得更新cookie数据请求,因为这个域和你第一次访问时是一样的。 解决方案:为主页 url 添加参数。 这有助于 Chrome 意识到此请求需要更新 cookie 以调用服务器。

在仪表板页面添加

<?php 
$track = '?track='.uniqid();
?>
<a href="<?= get_home_url(). $track ?>"> <img src="/img/logo.svg"></a>

示例:根据用户是否登录显示不同的输出。

<?php

if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    echo 'Welcome, visitor!';
}

?>

我觉得。 当来宾启动页面但管理员未登录时,我们不会显示某些内容,例如聊天。

add_action('init', 'chat_status');

function chat_status(){

    if( get_option('admin_logged') === 1) { echo "<style>.chat{display:block;}</style>";}
        else { echo "<style>.chat{display:none;}</style>";}

}



add_action('wp_login', function(){

    if( wp_get_current_user()->roles[0] == 'administrator' ) update_option('admin_logged', 1);
});


add_action('wp_logout', function(){
    if( wp_get_current_user()->roles[0] == 'administrator' ) update_option('admin_logged', 0);
});

暂无
暂无

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

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