当前位置:首页>WordPress建站>WordPress开发>WordPress如何判断登录用户的角色

WordPress如何判断登录用户的角色

在WordPress主题或者插件开发的过程中,经常要遇到判断登录用户的角色,并根据不同的用户角色赋予不同的权限。下面总结两种比较常用的判断方法。

一、使用 current_user_can() 判断

current_user_can() 可以根据不同角色拥有的权限来判断用户角色,具体的用户权限,可以在Roles and Capabilities 中找到。

判断用户是否为管理员(Administrator)

if( current_user_can( 'manage_options' ) ) {
    echo 'The current user is a administrator';
}

判断用户是否为编辑(Editor)

if( current_user_can( 'publish_pages' ) && !current_user_can( 'manage_options' ) ) {
    echo 'The current user is an editor';
}

判断用户是否为作者(Author)

if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) {
    echo 'The current user is an author';
}

判断用户是否为投稿者(Contributor)

if( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
    echo 'The current user is a contributor';
}

判断用户是否为订阅者(Subscriber)

if( current_user_can( 'read' ) && !current_user_can( 'edit_posts' ) ) {
    echo 'The current user is a subscriber';
}

二、使用$current_user判断

$current_user是WordPress的一个全局变量,当用户登录后,这个里面就会有用户的角色和权限信息。

当WordPress的init action执行后,就可以安全的使用$current_user全局变量了。

在模板文件中判断登录用户是否为作者(Author)

global $current_user;
if( $current_user->roles[0] == 'author' ) {
    echo 'The current user is an author';
}

在functions.php中判断用户是否为作者(Author)

add_action( 'init', 'check_user_role' );
function check_user_role() {
    global $current_user;
    if( $current_user->roles[0] == 'author' ) {
        echo 'The current user is an author';
    }
}

之所以要使用

add_action( 'init', 'check_user_role' );

是因为$current_user这个全部变量到init action执行时才完成赋值,既然要读它的内容,至少要等到它的内容准备好后再读取。functions.php的代码先与init action执行,所以在functions.php中直接写global $current_user是无法获取用户信息的。

检查用户角色之前,还可以先检查一下用户是否登录

<?php
      if( is_user_logged_in() ) {
          //用户已登录,检查用户角色
      }
?>

更简单的方法

还有一种更直接的方法,例如判断当前用户是否为管理员

global $current_user;
if(in_array( 'administrator', $current_user->roles )){
    echo 'administrator';
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发

WordPress插件开发 之 添加自动检测更新和一键升级功能

2013-1-25 6:00:00

WordPress开发

WordPress主题制作 之 判断手机移动设备

2013-2-25 6:10:00

5 条回复 A文章作者 M管理员
  1. 七支剑

    如果需要输出评论作者的角色应该怎么写

  2. wp战士

    我觉得,这个地方,还可以讲一下 user_can($user_id,'[condition]’); 利用用户id,来判断用户的角色。

  3. —上文提到—↓
    "是因为$current_user这个全部变量到init action执行时才完成赋值,既然要读它的内容,至少要等到它的内容准备好后再读取。functions.php的代码先与init action执行,所以在functions.php中直接写global $current_user是无法获取用户信息的。"

    ———
    我想获取“ 新建文章”的分类,在functions.php判断,可是如下代码无效:if ( in_category(‘1’ ) ){//如果在分类1下}
    是不是也是要用到init action,我尝试了,没起作用。

    求教了,谢谢了!!

  4. 还有一个最简单的user_id,0是游客,1是管理员~

    • 这个方法太依赖默认数据了

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索