管理员登录后如何在两个表单之间切换?

时间:2015-10-10 作者:user2519838

我有两张表格(form1form2). 一旦管理员登录到任何地方,我的WordPress站点的所有访问者(未登录)都应该看到form1 在页面上,否则他们应该看到form2. 我正在自定义页面模板中使用此代码:

if ( current_user_can( \'author\' ) || current_user_can( \'administrator\' ) ) {    
    // show form1    
} else {   
    // show form2
}
这很好,但只适用于管理屏幕,而不适用于其他用户或访问者。我怎样才能使它具有普遍性?

2 个回复
SO网友:Yatix

您需要检查所有在线用户,看看管理员是否已登录。

使用此插件,您可以获取所有在线用户。

https://wordpress.org/plugins/wp-useronline/

可以使用函数检查列表是否包含admin。基于此,您可以显示表单。

SO网友:sMyles

您将有多少管理员?如果你只有几个,你可以用WP_User_Meta_Session_Tokens 根据特定用户ID检查会话。

类似于

$sessions = new WP_User_Meta_Session_Tokens( $user_id );
$user_sessions = $sessions->get_sessions();
您可以遍历所有用户,查看是否有管理员登录,但这只会导致更高的负载和每个页面上的查询负载(我不推荐)。

我唯一能想到的就是有一个选择,比如说,total_logged_in_admins, 并且只需连接到登录和注销,并根据用户是否是管理员来增加/减少管理员计数。

然后在您的页面上检查登录的管理员数量