• 注册
  • WordPress WordPress 关注:2 内容:19

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

  • 查看作者
  • 打赏作者
    • WordPress
    • Lv.14
      帅气冲天

      问题前言

      开发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开发团队为了方便我们使用而建的快捷辅助函数而已。

      使用说明

      请根据自己实际情况做相应修改

      请登录之后再进行评论

      登录

      我关注的论坛

      暂没有数据

    • 发布内容
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: