WordPress 判断不同用户的角色和权限

关于 WordPress 判断不同用户的角色和权限的问题,对于单用户操作 WordPress 博主而言,可能这个功能不太常用,但是对于多用户,包括开放注册的 WordPress 而言,这个功能可能就会用到了。为了实现这个功能,我翻遍了 WordPress 的官方文档,也没有找到相关的函数,不过还好,可以用查询数据库的方法实现。

首先,我们先要了解一下不同用户、不同角色的各级权限。在 WordPress 默认中,分五种角色(管理员、编辑、作者、投稿者、订阅者)和11种权限(level_0 ~ level_10),其中,管理员拥有最高权限(level_0 ~ level_10),编辑次之(level_0 ~ level_7)、再是作者(level_0 ~ level_2)、然后是投稿者(level_0 ~ level_1)、最后是订阅者(level_0)。在数据库中,关于权限的字段位于数据库中 wp_usermeta 表中的 meta_value,所以这个判断函数可以这么写:

<?php   
global $wpdb;
//显示管理员
$administrators = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value = 10 ORDER BY user_id");
//显示管理员、编辑
//$editors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 7 ORDER BY user_id");
//显示管理员、编辑、作者
//$authors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 2 ORDER BY user_id");
//显示管理员、编辑、作者、投稿者
//$contributors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 1 ORDER BY user_id");
//显示管理员、编辑、作者、投稿者、订阅者
//$subscribers = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 0 ORDER BY user_id");
foreach($administrators as $administrator){
    echo get_the_author_meta('display_name', $administrator).'<br />';
}
?>

在这个例子中,我 foreach 了管理员,也就是只输出权限最高的管理员用户,注释中分别是不同权限范围的用户。这里只是提供一个思路,更多的扩展就留给大家去发挥了。

  1. :eek: 我想在留言显示里的头像旁边显示留言人的用户角色,应该怎么搞?比如注册用户显示“订阅者”;非注册用户显示“游客”,编辑显示 “编辑”,我自己则显示“管理员”。。求助。email:idesign521*gmail.com