要成为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 是最常用的,但是如果您喜欢其他人,可以随时货比三家。这些插件基本上都为您提供了一种方便、直观的方式来编辑用户将能够在您的网站上进行的操作。
它们还允许您创建全新的角色-也许您需要创建一些简单且唯一的 “评论主持人”类型的用户。您只需创建该角色,并确保单击几下即可缩小所需的功能范围。
这些插件非常适合大多数WordPress用户,而这些用户不需要花费适度的性能开销。实际上,对于大多数站点来说,像这样的小插件的开销并不是最大的瓶颈,因此,专门的插件来进行所需更改的附加好处不值得让PHP费力。
但是,如果您是开发人员,或者性能下降确实实在难以承受,那么使用几行PHP即可轻松实现。
使用PHP更改WordPress用户角色的能力
在PHP中,WordPress角色是您使用和修改的对象。您可以通过以下两种方式之一访问它:直接通过访问全局变量$wp_roles
—或通过函数get_role
。我喜欢第二种,这有两个原因:
- 我不喜欢全局变量。
- 我认为该
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_cap
和remove_cap
是对象的方法,而不是简单的函数调用。
值得非常清楚的是,add_cap
和remove_cap
(相反)都是对象方法,而不仅仅是您调用的函数。也就是说,您不能调用add_cap('editor', 'remove_user')
:您必须首先使用get_role
或访问全局$wp_roles
对象来获取一个 WP_Role
对象。
用代码创建新的WordPress用户角色
我们提到插件不仅可以更改现有角色的能力,还可以让您创建新角色。要在自己的PHP中执行此操作,请使用add_role
函数。它包含三个参数:
- 角色slug别名-比如
'comment_moderator'
- 角色的显示名称-
'Comment Moderator'
或__('Commment Moderator', 'plugin-slug')
(符合多语言国际化) - 您希望该类型用户拥有的一系列能力
总之,它看起来像这样:
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_cap
和remove_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出色的另一件事。
相关文章推荐:
- WordPress用户角色编辑插件:User Role Editor【已汉化】
- WordPress根据用户角色隐藏文章/页面的功能模块(Meta Boxes)
- WordPress根据用户角色显示/隐藏某些后台功能
- WordPress 根据登录与否或不同用户角色显示不同菜单项
- WordPress 根据用户名/用户角色/能力/是否登录等隐藏部分文章内容
- WordPress用户角色与用户能力/权限
- WordPress 修改用户角色名称和添加新用户角色
- WordPress 根据用户角色和登录状态显示不同内容和小工具
- 如何对WordPress特定用户角色隐藏后台管理通知
大佬您好,我想请教一个问题。
就是我现在为我的 wordpress 安装了一个 名为 sucuri-scanner 的一个安全插件。
它默认是能让身为管理员的用户看到它的菜单,但如果我想让身为 editor (编辑者) 的用户也能看到它的菜单,我要怎么去做