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 />';
}
?>
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 了管理员,也就是只输出权限最高的管理员用户,注释中分别是不同权限范围的用户。这里只是提供一个思路,更多的扩展就留给大家去发挥了。
-
Wordpress 批量开通注册用户2011年04月14日 -
Readers Post 插件是数据库杀手2010年12月24日 -
小张主机新年优惠30%买一送一2010年02月12日 -
常在博客飘,主机被挨刀2010年01月14日
能不能具体说说不同吗?? 我就想知道不同的哦!谢谢了!
这个功能挺好玩的。试试看了
第一次来,顶一下咯
只能自己写代码来实现了。wordpress确实强大。
不错的想法
万戈,能否让某个栏目的文章只允许特定角色的读者(如:注册用户、编辑等)才能浏览?怎么做到啊
恩,理论上是可以,无非就是对某个分类的循环之外先套一个判断,具体还真没试过耶
话说这个很有用了····
学习了~~~
这个研究的蛮深的,学习了。
lixiaoke
没那么好的功夫去研究
个人写博客来说
没什么意思吧
技术帖。。
看不懂,不过今天来晚了
我就一个用户,自己=。=
研究的很透 ,学习了
单用户操作的就先不看了~~
再次来拜访 额呵呵
一直是一个人玩自己的博客·没有注意到权限这回事··
我只能小折腾,这么宏伟的目标我是完不成了,哈哈
只有博客做大了,才会有机会用到多用户吧~
单人博客,我这种草根就不开放了
看完评论了...
还没想到这个东西能拿到实现什么功能
...我给小黑做的新主题上不就用到了嘛
你折腾的很深度
也很深入
看来我是永远追不上了。
呵呵,你过奖啦,我也是初窥mysql的门道
我又涨了不少的知识。
看看能显示是订阅者不?
单用户的来看看了...
我博客开放注册,注册了十来个人,但貌似都没写作的权限
我就不开放注册了,自己折腾
收藏留用!
老万现在搞的好神人呐
可以确定目前和我无关…但是围观一下万大虾又在折腾啥还是很有趣味的,特别是在网络又断掉了只能手机上网的时候…
每次你手机留言,总是被收到垃圾评论里去
这个貌似开放投稿类的就比较实用了。
恩,就是给需要投稿类的网站做的主题时折腾的
万戈向SQL进军了
恩,发现sql也没有我想象的那么难,昨天下午翻了翻mysql的查询方法,简单的可以自己搞定了,嘿嘿
对我们多作者网站来说,WP的用户角色权限功能真的很鸡肋
所以才有了用户管理类的插件来弥补WP的先天不足
嗯 直接都表
看得比较晕,呵呵
我写的时候也有点晕,写完就豁然开朗了
发现有些东西实在很鸡肋
WP确实有些臃肿了,因为面向的用户群太大,要做到人人满意就不得不加大数据库查询
加大数据库的查询,就意味着wordpress运行更加缓慢
能够象论坛那样点几下设置权限就好了。
那就还要增加WP的数据库,对一般用户而言有点累赘了
这让我想起了asp.net中的角色管理,相当的帅气……哎……可惜用的太少了
前排就座
万哥这个也涉猎,太佩服了
今天第一次玩mysql
那个vpn 没人鸟我?
话说要统一发放
以前在别的地方看到过,有什么广告会根据来访者显示广告、
你真的“翻遍”官方文档了?。。
current_user_can()试试,如
if(current_user_can('level_10')){
//可以执行的操作
}
current_user_can()这是判断当前登陆用户吧,我是想调用所有指定权限的用户
说白了,也就登陆和不登陆用户。。这个容易吧。。is_user_logged_in()..
登陆用户分不同权限,上面那个函数可以解决。。。
你还需要什么?
关键是,我需要一个数组的形式,需要循环用的。。。
问问 怎么领vpn呀,去了那个网站问谁?
在网站上留言就可以了
我都一直没注意这个 呵呵!~
我之前也没注意,只有碰到了才会去研究一下
每次都来玩鸟
说错了,是来晚了鸟
WordPress的角色分配真是不太好,最好是可以自己制定各项权限
这个WP留了api,可以被插件调用,普通用户用不到,他就不放在后台了吧
单用户
今天升级到了3.0,感觉多用户不适合我。
我升级到3.0也不会开通这个功能
错过沙发。
这就是你找我聊天的后果
添加 filter 到 wp_list_authors() 函数里应该就行了,哈哈
高手就是高手,一语中地啊
其实我是来水的,
水吧,也不差这一条了,哈哈
第二
如果不算同一个人的话,好吧,你第二个
很显然我是第二个
觉得还是单用户的比较好,越来越臃肿了,犹豫了好久想换typecho
别啊,其实WP挺好,我越来越喜欢
WordPress开始向CMS发展了。
这个用不上,还想精简用户管理部分呢
我们是单用户,当然用不上啦,哈哈
sf
去领VPN了没
留言了说回复统一发放
。。。那如果留言数不够十个VPN的名额,那还不发了?
那我管你要哦