查明登录用户是否不是订阅者

时间:2012-07-31 作者:Nasir Zia

是否有条件标记允许我仅在用户不是订阅者时显示某些内容?

3 个回复
最合适的回答,由SO网友:Scott 整理而成
<?php
$current_user = wp_get_current_user();
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\';
?>
SO网友:kaiser

比@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 singleMU 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中的帖子。因此,它主要用于允许/拒绝访问特定的帖子功能

SO网友:gArn

这就是你的意思吗?

global $userdata;
get_currentuserinfo();
if ( $userdata->user_level != 0 )//check user level by level ID
{
  echo \'User is a not Subscriber\';
}
else
{
  echo \'User is a Subscriber\';
}
有关不同级别ID的更多详细信息:http://codex.wordpress.org/Roles_and_Capabilities#User_Levels

还有current\\u user\\u can()函数,可用于表示特定功能以获得更大的灵活性。http://codex.wordpress.org/Function_Reference/current_user_can

结束

相关推荐

使用GET_USERS获取多个角色

我有一些这样的代码: $query_args = array(); $query_args[\'fields\'] = array( \'ID\', \'display_name\' ); $query_args[\'role\'] = \'subscriber\'; $users = get_users( $query_args ); foreach ($users as $user) $users_array[$user->ID] = $user->