详解WordPress的用户角色和能力/权限

要成为WordPress网站的合格管理员,您必须了解一些有关用户角色和能力的知识:用户是什么,如何创建新用户以及要为用户做什么。涵盖这些内容有很多价值,但是我们今天的目标是真正了解整个WordPress用户管理和角色系统在概念上是如何工作的,并涵盖几种最重要的修改方法。

WordPress用户介绍

每个可以登录WordPress网站的帐户都代表一个“用户”,每个WordPress用户都有一个“角色”。

每个可以登录WordPress网站的帐户都代表一个“用户”。也就是说,每个“登录”(一个用户名和密码对)都是WordPress中的一个凭据单位。这些用户帐户是帖子、页面、媒体等的作者。作为WordPress网站的管理员,您可以通过管理侧边栏中的“用户>添加用户”随意创建新用户。通常,您应该为要登录到站点的每个人创建一个新用户。

您可能还已经意识到有关WordPress授权系统的其他事项:每个WordPress用户都有一个“角色”。您必须在创建新帐户的页面上选择它。

WordPress默认用户角色

WordPress开箱即用,具有以下角色:

  • 超级管理员这是一个仅限多站点网络的角色。顾名思义,它是管理员的更强大版本。超级管理员不仅可以以管理员身份更改和控制单个WordPress网站,还可以更改谁可以访问网络中的特定网站。
  • 管理员:这是您可能用来登录自己的WordPress网站的角色。这就是WordPress默认情况下使网站上的第一个用户使用的功能,并且是单个WP站点功能最强大的角色。如果“管理员”无法在WordPress网站上开箱即用,则任何人都无法做到。安装插件、更改主题、创建用户、发布帖子等,这些都由管理员控制。
  • 编辑:这是下一个最强大的角色。您可以执行所有您可以想象的必要的后期和媒体创作以及编辑工作,但是不能新建用户、添加新插件或进行任何更改网站功能的操作。
  • 作者:从编辑又走了一步,作者角色只能更改自己的文章和媒体。他们无法更改网站上其他用户的内容。
  • 贡献者:贡献者可以编辑自己的文章,删除自己发表的未发布文章以及阅读网站。他们甚至无法发布自己的文章。
  • 订阅者:订阅者角色仅用于以下目的:一个您想在WordPress网站上拥有帐户的人,但您不想做任何事情,只能像没有帐户的人一样阅读您的网站。这个角色是您最经常看到的WordPress会员站点的“成员”,因为除了会员插件作者提供的这些用途之外,它不提供其他站点权限。

WordPress用户的安全隐患

为了安全起见,您希望为个人提供尽可能少的访问权限,使他们能够执行自己需要的操作。

尽管今天不是我们关注的重点,但值得一提的是在每个地方都遵循安全性的一般原则:您希望为个人提供尽可能少的访问权限,使他们能够执行自己需要的操作。

您最常在WordPress网站上使用的用户通常不应该是管理员。

“管理员”角色是(单个非网络)WordPress网站所具有的最强大的功能;向只需要发布和编辑文章及其他媒体的用户提供这么多的权限,这就是不必要的安全性错误。

对于正常的WordPress发布任务,“编辑”角色绰绰有余;实际上,如果您是该网站上的唯一作者,则“作者”角色可能会为您效劳。无论哪种方式,只有在您需要执行其他角色无法做的事情时,您才应该登录一个管理员用户(也必须具有该身份):创建新用户、安装或卸载插件、更改主题等。破坏您最常用的WordPress帐户(例如您无意中将其保留在咖啡馆中登录)不会让某人对您的网站造成严重破坏。

您不应该让旧帐户拥有比今天更多的访问权限。

同样,您不应该不加考虑就给任何类型的人员帐户。而且,您不应该让旧帐户拥有比今天更多的访问权限。假设有人曾经为您的网站写过文章,但现在不再写了:设置他们为订阅者角色。他们的帐户仍然存在,因此他们的帖子仍然可用并且属性适当,但是他们不会意外地做不应在您网站上做的任何事情。

能力和角色如何交织

到目前为止,我们已经确定WordPress网站上不同的用户角色具有不同的能力。实际上,这是WordPress访问控制系统的核心:用户是分配了特定角色的用户组的成员,并且该角色本身映射到站点上的各种能力。

为了更好地理解这一点,可以看下下面的图片。当我们移走我先前列出的角色时,您的角色将越来越少的WordPress中可用的特定功能。

这种具体的命名能力到用户角色的映射是WordPress访问控制系统最强大和有用的功能之一。当您需要授权(或取消授权)具有特定能力的用户或一组用户时,只需更改用户的角色即可轻松实现。

同样,有时您需要所有用户组才能具有新功能。也许您的编辑者正在充当评论的主持人,并且您还希望他们能够从您的网站中删除用户。然后,您可以编辑“作者”角色以赋予它这种能力- 只有这种能力被称为remove_users。由于使用了“角色和能力”系统,因此您可以这样做,而不必担心您的站点上有20位编辑者这一事实。

允许您更改角色能力的插件

一旦了解了WordPress用户访问系统的工作原理,就可以通过多种方式进行更改,就像我刚才提到的那样(为编辑者提供“删除用户”功能)。

第一种方法是使用这方面的插件。

User Role Editor

User Role Editor 是最常用的,但是如果您喜欢其他人,可以随时货比三家。这些插件基本上都为您提供了一种方便、直观的方式来编辑用户将能够在您的网站上进行的操作。

它们还允许您创建全新的角色-也许您需要创建一些简单且唯一的 “评论主持人”类型的用户。您只需创建该角色,并确保单击几下即可缩小所需的功能范围。

这些插件非常适合大多数WordPress用户,而这些用户不需要花费适度的性能开销。实际上,对于大多数站点来说,像这样的小插件的开销并不是最大的瓶颈,因此,专门的插件来进行所需更改的附加好处不值得让PHP费力。

但是,如果您是开发人员,或者性能下降确实实在难以承受,那么使用几行PH​​P即可轻松实现。

使用PHP更改WordPress用户角色的能力

在PHP中,WordPress角色是您使用和修改的对象。您可以通过以下两种方式之一访问它:直接通过访问全局变量$wp_roles—或通过函数get_role。我喜欢第二种,这有两个原因:

  1. 我不喜欢全局变量。
  2. 我认为该get_role版本使代码阅读性更好。

在这两种情况下,我们都将继续以允许我们的“编辑”执行以下操作为例remove_users。如果使用,则get_role如下所示:

function wps_editor_can_remove_users() {
    $editor = get_role( 'editor' );
    $editor->add_cap( 'remove_users' );
}

或者,如果您希望使用全局变量:

function wps_editor_can_remove_users(){
    global $wp_roles;
    $wp_roles->add_cap( 'editor', 'remove_users' );
}

在第一个示例中,获取角色(“编辑”)将为您处理方法调用'editor'上的参数add_cap,我很喜欢这种方法。

这些方法可以直接在您的插件或主题的functions.php使用-更改存储在数据库中,因此可以随时调用-或可以通过WordPress动作挂钩挂载到 init

这两个add_capremove_cap对象的方法,而不是简单的函数调用。

值得非常清楚的是,add_capremove_cap(相反)都是对象方法,而不仅仅是您调用的函数。也就是说,您不能调用add_cap('editor', 'remove_user'):您必须首先使用get_role或访问全局$wp_roles对象来获取一个 WP_Role 对象。

用代码创建新的WordPress用户角色

我们提到插件不仅可以更改现有角色的能力,还可以让您创建新角色。要在自己的PHP中执行此操作,请使用add_role函数。它包含三个参数:

  1. 角色slug别名-比如 'comment_moderator'
  2. 角色的显示名称- 'Comment Moderator'__('Commment Moderator', 'plugin-slug')(符合多语言国际化)
  3. 您希望该类型用户拥有的一系列能力

总之,它看起来像这样:

register_activation_hook( __FILE__, 'wps_add_roles_on_activation' );
function wps_add_roles_on_activation() {
    add_role( 
        'comment_moderator',
        __('Commment Moderator', 'plugin-slug'), 
        array( 
            'read' => true,
            'edit_posts' => true,
            'edit_other_posts' => true,
            'edit_published_posts' => true,
            'moderate_comments' => true
        )
    );
}

为了简洁起见,此角色仅获得四种能力。评论版主可以主持评论,并可以对文章进行较小的更改和更正(可能是回复评论)。他们可以更改自己的文章、其他人的文章以及已发布的文章。这就是这个角色所能做的,仅此而已。

再次,由于新角色存储在数据库中,并在需要时由WordPress从数据库中重新加载,因此您可以(通常应该)在插件或主题(不推荐在主题中创建用户)被激活时创建。如果您将它们吸引到init动作钩子上,它不会破坏任何东西,但是性能稍差。

更改特定用户的能力

可以忽略WordPress的角色系统并授予用户特定的能力,但这很少是最好的解决方案。

到目前为止,我们已经讨论了使用由用户角色授予和维护的WordPress用户的能力。在几乎所有情况下,我都建议您这样做来更改,控制和修改访问权限。与尝试手动控制站点上每个用户的操作相比,它是一个功能更强大、更灵活的系统。

话虽这么说,有时候您可能只需要与需要更多或更少权限的特定用户打交道,并且您知道您永远都不想在授权历史上的任何其他时间类似地授权(或取消授权)其他用户。现场。如果不是这样,请执行几个额外的步骤来创建角色,只有该用户现在可以使用。

如果确实要更改特定用户的能力,则可以仅对该用户通过add_capremove_cap方法进行更改。看起来像:

add_action( 'init', 'wps_david_cant_edit' );
function wps_david_cant_edit() {
    $user_id = 7; // 用户的ID
    $user = new WP_User( $user_id );
    $user->remove_cap( 'edit_posts' );
}

实质上,这是在加载角色的常规能力之后,对特定用户的特定替代。同样,这是可能的,但很可能不是最佳解决方案。

总结

从本质上讲,WordPress用户系统是我们处理WordPress网站功能的方式。通过为系统中的每个用户分配一个命名角色,WordPress可以访问一组明确定义的功能,这些功能确定该用户可以在站点上执行的操作。由于在用户可以做什么和他们是谁之间存在额外的一层(称为角色),因此您获得了很大的灵活性。这只是使WordPress出色的另一件事。

相关文章推荐:

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
欢迎关注我们的微信公众号:WPDAXUE

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

暂无评论

发表评论