WordPress:如何判断登录用户的角色
过去判断登录用户的角色我喜欢用current_user_can(),比如判断当前用户是否是作者用current_user_can('author'),记得WordPress官方文档中给的例子也是这样用,不过今天看了一下文档,貌似用法变了,传递角色作为参数不再可靠,正确的用法是传递$capability,那么该如何判断用户角色呢?
注:以下内容在WP 3.4+上测试通过
current_user_can()的正确用法
current_user_can()文档中有一句话要注意一下
Do not pass a role name to current_user_can(), as this is not guaranteed to work correctly.
意思是说传递用户角色名称(如author、contributor)作为参数不能100%保证返回正确的结果,正确的用法是传递$capability,从这个函数的表面意思看,参数是权限比参数是角色名称更靠谱。
所以,要根据不同角色拥有的权限来判断用户角色,用户权限可以在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是无法获取用户信息的。详细信息可以参考《WordPress Actions加载顺序》。
检查用户角色之前,还可以先检查一下用户是否登录
<?phpif( is_user_logged_in() ) {//用户已登录,检查用户角色}
?>
更简单的方法
还有一种更直接的方法,例如判断当前用户是否为管理员
global $current_user;
if(in_array( 'administrator', $current_user->roles )){echo 'administrator';
}
文章链接:http://www.solagirl.net/wordpress-get-current-user-role.html
转载请注明本文链接,或写明转自www.solagirl.net
WordPress:如何判断登录用户的角色相关推荐
- 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作
任务要求 idea jdk1.8 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作 任务管理系统 一.系统需求 查询所有任务信息:展示所有任务信息 录入任务信息: 用户输入:任务名, 预计完 ...
- wordpress获取当前登录用户信息的方法
1). get_currentuserinfo(); 此函数将当前登录用户信息赋给全局变量$current_user以及一些单独的用户信息全局变量例如$display_name, $user_emai ...
- WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验
WEB综合案例 day04 用户与角色绑定功能 登录用户菜单控制和权限效验 1. 用户与角色 思路: 根据用户去找角色的信息,然后需要用到两个表的查询,在前端页面显示信息的时候用for:each通过遍 ...
- 【微信小程序】用户授权以及判断登录是否过期的方法
实现效果 场景 在打开小程序时判断用户是否过期(如果未过期则重新登录),然后获取用户信息,进而在前台显示: 主要实现两个功能: 判断登录是否过期,如果过期则就重新登录,如果没过期就提示未过期: 获取用 ...
- 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree
回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...
- uni-app学习笔记之判断当前用户是否拥有某角色和权限
传送门 此功能依赖uni-id 需要应用关联uniCloud服务空间并使用uni-id 需要在token内缓存角色权限才可使用 (自uni-id 3.0.0起,支持在token内缓存用户的角色权限,默 ...
- PHP登录成功显示头像,实现WordPress评论框显示已登录用户头像
WordPress大多主题在用户登录下,评论框上也会显示一句:Logged in as XXX,它同样也能让已登录用户显示头像,效果如下: 实现WordPress评论框显示已登录用户头像 先来看看Wo ...
- sql2008 新建登录用户只能修改某一个表 服务器角色,sql语句创建新登录名和设置权限...
use DBName go --新增用户 exec sp_addlogin '用户名','密码','默认数据库名' --添加登录 exec sp_grantdbaccess N'test' --使其成 ...
- html页面怎么判断未登录,未登录用户.html
未登录用户 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif'; ...
最新文章
- [转]VirtualBox 复制VDI 并能创建新的虚拟机
- FastDFS:Java客户都实现文件的上传、下载、修改、删除
- 读取Exchange的用户未读邮件数3种办法
- Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
- 【数据结构笔记02】什么是算法
- android 动态申请camera权限,GitHub - yinzhengwei/permissiongranted: Android动态权限检测和申请管理...
- Qt中用QLabel显示图片
- Adobe Flash Player 未能正常运行问题
- 小程序应用 饿了么美团外卖cps领券返利小程序+前端(带三级分销裂变)
- 解决其他浏览器能上网谷歌浏览器不能上网
- WebGIS 瓦片地图引擎实现之——地图瓦片计算
- 2020京东双十一【全民营业,瓜分十亿】自动做任务软件
- HUD - 1873
- Tensorflow slim库
- 如何用js绘制流星雨特效
- 深度强化学习+启发人类的决策智能,专访一家有愿景的中国企业「启元世界」...
- Linux菜鸟成长日记 ( vim程序编辑器及常见的文件管理命令)
- mysql数据库的密码破解/用户授权/备份/图形化管理工具phpmyadmin
- 使用 Stable Diffusion 生成的仿旧照片和二次元图片
- web内容如何保护:如何有效地保护 HTML5 格式的视频内容?
热门文章
- 大整数减法(信息学奥赛一本通-T1169)
- 信息学奥赛C++语言:旗手
- 37 FI配置-财务会计-固定资产-组织结构-复制参考折旧表/折旧范围表
- 2 在会计中未发现任何后继凭证
- jq fileupload 设置最大文件大小5m_如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 | Linux 中国...
- android 获取编译日期,flutter学习笔记(2)android编译,以及如何加快首次编译时间。...
- python logger 服务器_python——logger模块
- 电脑怎么打字切换中文_Master of Typing in Chinese for Mac(中文打字大师)
- 【6.1】图片风格迁移 Neural Style Transfer
- influxdb连续查询CQ和保留策略RP