找出登录用户是否不是订阅者


Answers:


9
<?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';
?>

15

比@Brady向您展示的方法更简单current_user_can

if ( current_user_can( 'subscriber' ) )
    echo "Hi, dear subscriber! Glad seeing you again!";

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!";

幕后

查看单一安装MU安装的功能来源时,您会看到它们基本上都依赖于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()允许您根据发布对象检查功能。该对象仅可用于数据库中已经存在的帖子。因此,它主要用于允许/拒绝访问特定帖子功能。

1
我认为需要对此进行更新,因为: 不要将角色名称传递给current_user_can(),因为不能保证它可以正常工作(请参阅#22624)。current_user_can()法典页面AFAIK尚未更改。
Nicolai 2014年

@ialocin您可以根据需要进行更新(已满2岁)。您基本上是正确的。另一方面,角色也被添加为能力;)
kaiser

1
我想这实际上足以进行评论/更新,除了我很懒...也;)
Nicolai 2014年

-3

你是这个意思吗?

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_user_can()函数,可让您指定特定功能以获得更大的灵活性。 http://codex.wordpress.org/Function_Reference/current_user_can


3
不要使用用户级别...这是法典对此的评价:To maintain backwards compatibility with plugins that still use the user levels system (although this is very much discouraged), the default Roles in WordPress also include Capabilities that correspond to these levels. User Levels were finally deprecated in version 3.0.
Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.