问题描述
是否有任何条件标签,只有当用户不是用户时,才允许我显示某些内容?
最佳解决方案
<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
echo 'User is a not Subscriber';
else
echo 'User is a Subscriber';
?>
次佳解决方案
一个更简单的方法,比 @Brady 显示你是使用 current_user_can
:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
MU
还有一个等同于 MU 安装的命名为 current_user_can_for_blog
:
global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again on this blog!";
幕后
当查看功能 for single 或 MU installations 的功能的来源时,您将看到,两者基本上都依赖于 wp_get_current_user()
,然后检查 has_cap
。现在,如果你想看看帽子来自哪里,那么 WP_User
类/对象进入游戏。
这套的其他成员
那么还有 author_can( $GLOBALS['post'], 'capability' );
。所有这些功能都在~/wp-includes/capabilities
之内。
什么时候用什么?
现在,current_user_can(_FOR_BLOG)
和 user_can
的区别在哪里?
-
user_can()
是较新的 (自 3.1 以来),但需要用户作为对象。因此,您可以在不想将目标用户定位到某些用户的情况下使用它。 -
current_user_can_*()
是显而易见的。 -
author_can()
允许您检查 Post 对象的功能。此对象仅适用于已在 DB 中的帖子。所以主要是允许/拒绝访问特定的帖子功能。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。