WordPress 检查判断用户或角色权限的函数整理及分析

开发 WordPress 网站时,我们避免不了要与 WordPress 用户数据打交道,特别是开发 WordPress 前端用户中心的时候,我们需要知道某个用户是否有权限执行某些操作,以便为用户提供足够的安全保证。有几个内置于 WordPress 中的辅助函数可以帮助我们轻松的判断用户的状态、权限等信息。我们把这些函数整理了一下,形成此文。

判断用户是否登录 is_user_logged_in

该函数的用法很简单,功能也很单纯,就是为了判断用户是否登录了网站,不需要参数,如果用户登录返回 true,如果没有登录 返回 false。

判断是否为超级管理员 is_super_admin

该函数可以接受一个用户 ID 作为参数,如果没有设置这个参数,这个参数的值默认为当前登录用户的用户 ID。

如果单站点模式中使用,该函数会判断用户是否为管理员。

如果被判断的用户是超级管理员或管理员,返回 true,不是则返回 false。

判断某用户可以做什么 user_can

该函数需要两个参数,第一个是用户 ID 或用户对象,第二个是权限名称或角色名称。如果用户拥有某个权限或角色,返回 true,没有则返回 false。

判断当前用户可以做什么 current_user_can

这个函数可以说是上面函数的简写加强版,省掉了上面函数前面的用户 ID 参数,而多加了一个可选的 object_id 参数,用来检查指定对象的自定义权限,这个参数我们用得不多,如果需要请参数 current_user_can 官方文档

判断当前用户在某个站点可以做什么 current_user_can_for_blog

这个函数是 current_user_can 函数的多站点定制版,在多站点中,检查用户是否具有某个站点的权限,不过省略了不常用的 object_id 参数。该函数也接受两个参数,第一个参数是博客 ID,第二个参数是权限或角色名称。

判断一篇文章的用户可以做什么 author_can

类似 user_can 函数,不同的是这个函数第一个参数是文章 ID 或对象,而不是用户,为我们省略了一个获取文章用户的步骤。第二个参数依然是角色或权限名称。

WordPress 中用户判断函数的起源

看了上面这么多判断函数,有人会该忍不住吐槽了,WordPress 真是麻烦,判断个用户权限都需要记住这么多函数,其实,他们如果能够看一下这些函数的源码,就会发现,通过这些函数最终执行用户权限判断的代码其实只有一个:WP_User::has_cap,这些函数只是 WordPress 开发团队为了方便我们使用而建的快捷辅助函数而已。

WordPress 检查判断用户或角色权限的函数整理及分析
滚动到顶部