过去判断登录用户的角色我喜欢用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';
}
作者: Sola

文章链接:http://www.solagirl.net/wordpress-get-current-user-role.html
转载请注明本文链接,或写明转自www.solagirl.net

WordPress:如何判断登录用户的角色相关推荐

  1. 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作

    任务要求 idea jdk1.8 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作 任务管理系统 一.系统需求 查询所有任务信息:展示所有任务信息 录入任务信息: 用户输入:任务名, 预计完 ...

  2. wordpress获取当前登录用户信息的方法

    1). get_currentuserinfo(); 此函数将当前登录用户信息赋给全局变量$current_user以及一些单独的用户信息全局变量例如$display_name, $user_emai ...

  3. WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验

    WEB综合案例 day04 用户与角色绑定功能 登录用户菜单控制和权限效验 1. 用户与角色 思路: 根据用户去找角色的信息,然后需要用到两个表的查询,在前端页面显示信息的时候用for:each通过遍 ...

  4. 【微信小程序】用户授权以及判断登录是否过期的方法

    实现效果 场景 在打开小程序时判断用户是否过期(如果未过期则重新登录),然后获取用户信息,进而在前台显示: 主要实现两个功能: 判断登录是否过期,如果过期则就重新登录,如果没过期就提示未过期: 获取用 ...

  5. 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree

    回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...

  6. uni-app学习笔记之判断当前用户是否拥有某角色和权限

    传送门 此功能依赖uni-id 需要应用关联uniCloud服务空间并使用uni-id 需要在token内缓存角色权限才可使用 (自uni-id 3.0.0起,支持在token内缓存用户的角色权限,默 ...

  7. PHP登录成功显示头像,实现WordPress评论框显示已登录用户头像

    WordPress大多主题在用户登录下,评论框上也会显示一句:Logged in as XXX,它同样也能让已登录用户显示头像,效果如下: 实现WordPress评论框显示已登录用户头像 先来看看Wo ...

  8. sql2008 新建登录用户只能修改某一个表 服务器角色,sql语句创建新登录名和设置权限...

    use DBName go --新增用户 exec sp_addlogin '用户名','密码','默认数据库名' --添加登录 exec sp_grantdbaccess N'test' --使其成 ...

  9. html页面怎么判断未登录,未登录用户.html

     未登录用户 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif'; ...

最新文章

  1. [转]VirtualBox 复制VDI 并能创建新的虚拟机
  2. FastDFS:Java客户都实现文件的上传、下载、修改、删除
  3. 读取Exchange的用户未读邮件数3种办法
  4. Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
  5. 【数据结构笔记02】什么是算法
  6. android 动态申请camera权限,GitHub - yinzhengwei/permissiongranted: Android动态权限检测和申请管理...
  7. Qt中用QLabel显示图片
  8. Adobe Flash Player 未能正常运行问题
  9. 小程序应用 饿了么美团外卖cps领券返利小程序+前端(带三级分销裂变)
  10. 解决其他浏览器能上网谷歌浏览器不能上网
  11. WebGIS 瓦片地图引擎实现之——地图瓦片计算
  12. 2020京东双十一【全民营业,瓜分十亿】自动做任务软件
  13. HUD - 1873
  14. Tensorflow slim库
  15. 如何用js绘制流星雨特效
  16. 深度强化学习+启发人类的决策智能,专访一家有愿景的中国企业「启元世界」...
  17. Linux菜鸟成长日记 ( vim程序编辑器及常见的文件管理命令)
  18. mysql数据库的密码破解/用户授权/备份/图形化管理工具phpmyadmin
  19. 使用 Stable Diffusion 生成的仿旧照片和二次元图片
  20. web内容如何保护:如何有效地保护 HTML5 格式的视频内容?

热门文章

  1. 大整数减法(信息学奥赛一本通-T1169)
  2. 信息学奥赛C++语言:旗手
  3. 37 FI配置-财务会计-固定资产-组织结构-复制参考折旧表/折旧范围表
  4. 2 在会计中未发现任何后继凭证
  5. jq fileupload 设置最大文件大小5m_如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 | Linux 中国...
  6. android 获取编译日期,flutter学习笔记(2)android编译,以及如何加快首次编译时间。...
  7. python logger 服务器_python——logger模块
  8. 电脑怎么打字切换中文_Master of Typing in Chinese for Mac(中文打字大师)
  9. 【6.1】图片风格迁移 Neural Style Transfer
  10. influxdb连续查询CQ和保留策略RP