
WordPress用户角色和权限使您能够控制其他用户可以或不能在您的网站上执行的操作。您可以使用它们来管理用户操作,例如撰写和编辑文章、创建新页面、审核评论、安装插件、添加新用户等等。
了解用户角色和权限对于管理任何WordPress网站都是必不可少的。例如,如果您正在为客户构建站点,您不希望他们编辑或更改已安装的主题。同样,让多作者博客的作者安装或删除插件也是不明智的。
学习如何巧妙地管理WordPress用户角色将帮助您简化工作流程、确保网站安全并获得对网站的最终控制权。
在这份详尽的指南中,您将了解WordPress用户角色、WordPress提供的各种权限、如何编辑现有用户角色、如何在多站点上管理用户,以及使用一组全新权限创建新角色。
角色和权限是WordPress中用户访问管理的基础。要了解WordPress中的用户角色,您首先需要知道什么是权限。
WordPress将用户可以采取的任何操作定义为Capability。以下是WordPress中可用权限的一些示例,以及它们在其代码中的引用方式:
大多数权限从它们的名称就可以不言自明。WordPress的核心内置了70多种硬编码权限。
角色是您可以分配给用户的一系列权限。每个WordPress用户都需要分配一个角色。用户只能执行其角色授予他们的操作。

“角色”是“权限”的 ***
在上图中,角色 1的任何用户都可以阅读文章,但不能编辑文章。具有角色 2的用户可以阅读和编辑文章,但他们不能发布文章。任何具有角色 3的用户都可以阅读、编辑和发布文章,但他们不能删除文章,这与可以删除文章的角色 4用户不同。

WordPress仪表盘中的“添加新用户”面板
WordPress使用其许多本机权限来定义其默认用户角色。例如,它授予管理员和编辑者权限publish_pages,但不会将它们分配给订阅者和贡献者。

WordPress仪表盘中的“用户”面板
至少,每个WordPress用户都有一个用户名、密码、一个电子邮件地址和一个角色。

phpMyAdmin显示WP数据库存储权限的位置
WordPress将其所有基于角色的权限存储在中wp_user_roles序列化选项下的wp_options表中。WP_Roles核心类用于定义如何在数据库中存储角色和权限。
如果你使用 WordPress,你可能以前见过“用户角色”这个术语。但究竟什么是用户角色,它又是如何工作的呢?
简单地说,用户角色是一组权限,决定了用户在网站上能做什么和不能做什么。每个角色都有一个显示在 WordPress 管理面板中的名称,并有自己的权限,管理员可以启用或禁用这些权限。
WordPress 提供六种预定义的用户角色: 超级管理员、管理员、编辑、作者、贡献者和订阅者。
每个角色都有一套权限,如发布文章、管理评论或管理主题和插件。有些角色对网站拥有广泛的控制权,而有些角色则受到更多限制。
例如,超级管理员角色可以完全访问所有权限,尤其是在多站点 *** 中,而订阅者则仅限于阅读内容。
如果需要,网站所有者可以使用 add_cap() 和 remove_cap() 等函数添加或删除权限,从而进一步自定义角色。此外,开发人员还可以使用 add_role() 和 remove_role() 引入新角色或移除现有角色,从而使 WordPress 用户管理高度灵活。
WordPress使用User Roles API实现角色和权限,其中大部分基于核心类。wp-includes/class-wp-roles.php您可以在文件中找到它的来源。
如果您查看数据库,您会发现角色位于一个已定义角色名称的数组中。rolename键将用户角色名称存储为name键的值,并将所有权限存储在单独的数组中作为capability键的值。
array ( 'rolename' => array ( 'name' => 'rolename', 'capabilities' => array() ) )
WP_Roles。您可以在代码中的任何位置调用它们以与用户角色API进行交互。
注意: WordPress包含另一个名为的核心类(注意单数“Role”)。它用于扩展用户角色API。
当你时,它看起来像这样:
array ( 'administrator' => array ( 'name' => 'Administrator', 'capabilities' => array ( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, // [...rest of the lines cut off for brevity...] ), ), 'editor' => array ( 'name' => 'Editor', 'capabilities' => array ( 'moderate_comments' => true, 'manage_categories' => true, 'manage_links' => true, // [...rest of the lines cut off for brevity...] ), ), 'author' => array ( 'name' => 'Author', 'capabilities' => array ( 'upload_files' => true, 'edit_posts' => true, 'edit_published_posts' => true, // [...rest of the lines cut off for brevity...] ), ), 'contributor' => array ( 'name' => 'Contributor', 'capabilities' => array ( 'edit_posts' => true, 'read' => true, // [...rest of the lines cut off for brevity...] ), ), 'subscriber' => array ( 'name' => 'Subscriber', 'capabilities' => array ( 'read' => true, 'level_0' => true, ), ), )
它是一个多维数组,每个角色都分配了一个角色名称并授予了一组权限。同样,WordPress将基于用户的权限存储在带有wp_capabilities元键名称的wp_usermeta表中。
注意:您的设置中的wp_前缀可能不同。这取决于站点文件wp-config.php中$table_prefix全局变量的值。

WordPress Codex中的“角色与权限”图表
WordPress Codex包含一个简单的,尽管它不是那么直观。它总结了默认用户角色在单站点和多站点WordPress设置中可以执行的所有操作。在一定数量的权限之后会有一个中断,以便您轻松区分高级和低级权限。
为了更好地一目了然地展示所有WordPress角色和权限,您可以。
WordPress的Gutenberg区块编辑器引入了一个名为Reusable Blocks的惊人功能。它允许您将整个区块(或多个区块)保存为模板,并在您网站的其他任何地方使用它。

在WordPress的新Gutenberg区块编辑器中添加“可重用区块”
因此,WordPress还引入了以下与可重用区块相关的新权限:
上面列出的权限与文章相关的权限类似。管理员或编辑者可以访问所有与可重用区块相关的权限,而作者只能编辑或删除由他们创建的可重用区块。贡献者只能读取可重用的区块。
特殊权限:未经过滤的上传
未经过滤的上传是一项特殊权限,默认情况下不分配给任何用户角色,包括管理员或超级管理员。它允许用户上传具有任何扩展名(例如 SVG 或 PSD)的文件,而不仅仅是那些文件。
注意:您可以使用WordPress支持的mime类型和文件扩展名列表。
要启用此权限,您需要将以下代码片段添加到您的wp-config.php文件中。在要求您停止编辑的行之前定义常量。
define( 'ALLOW_UNFILTERED_UPLOADS', true );
定义此常量后,您可以为WordPress单站点上的任何用户角色安装未过滤上传权限。但是,在多站点安装中,只有超级管理员才能拥有此权限。
例如,如果您想将unfiltered_upload权限分配给编辑器,您可以在WordPress代码中的任何位置添加以下代码(理想情况下,仅在主题或插件激活时运行它):
<?php $role = get_role( 'editor' ); $role->add_cap( 'unfiltered_upload' ); ?>
我们将在本文后面讨论如何添加或自定义所有用户角色或特定用户的权限。
WordPress中主要有两种类型的权限:
例如,WordPress授予作者自己文章的edit_posts权限,以便他们能够编辑它们。但是,此权限不允许他们编辑其他用户的文章。这就是元权限提供帮助的地方。
WordPress使用函数返回绑定到特定对象的原始权限数组。然后它将它们与用户对象进行比较,以检查用户是否可以编辑文章。
其他一些元权限示例是read_post、delete_post、remove_user和read_post。我们将在下面的自定义权限部分中更深入地了解它们。
WordPress包括六个预定义的用户角色。WordPress安装的之一个用户默认获得管理员角色(或WordPress多站点安装的超级管理员角色)。
由于WordPress在发展成为成熟的CMS之前最初是一个博客平台,因此它定义了大部分用户角色以在 *** 上发布内容。它的其他预定义用户角色是Editor、Author、Contributor和Subscriber。

默认的WordPress用户角色按权限顺序堆叠
将默认的WordPress用户角色想象为代表各种权限的堆叠圆柱体的 *** 。更大的圆柱体的权限最多,第二大的圆柱体的权限次之,最小的圆柱体的权限最少。
| 用户角色 | 描述 | 访问权限级别 | |
| 1 | 超级管理员(Super Admin) | 拥有访问整个网站的权限,包括 *** 管理功能。 | 更高级别访问权限。可以执行网站上的任何操作。 |
| 2 | 管理员(Administrator) | 拥有所有管理权限,包括添加和管理用户、安装和激活插件和主题以及修改网站设置。 | 高级别访问权限。可以管理用户、插件、主题和网站设置。 |
| 3 | 编辑(Editor) | 可以创建、编辑和发布自己的帖子,也可以管理其他用户的帖子。 | 可以管理所有用户的文章。可以发布和编辑自己和他人的文章。 |
| 4 | 作者(Author) | 可以创建、编辑和发布自己的文章,但不能发布其他用户的文章。 | 可以发布和编辑自己的文章,但不能发布和编辑其他用户的文章。 |
| 5 | 贡献者(Contributor) | 可以创建和编辑自己的文章,但不能发表。但贡献者可以提交文章供编辑或管理员审核。 | 可以创建和编辑文章,但不能发表文章。可提交文章供审核。 |
| 6 | 订阅者(Subscriber) | 拥有最有限的访问权限,只能管理自己的资料和对文章发表评论。 | 更低级别的访问权限。可以管理自己的个人资料并对文章发表评论。 |
你不应该认为一个角色优于另一个角色。相反,将角色视为在站点内设置用户的职责。
用户角色永远不会优越,也不会低劣,它准确地定义了它的意图。
现在让我们详细了解所有预定义的WordPress用户角色。

WordPress中的“Administrator”角色仪表盘
WordPress为任何单站点安装的之一个用户分配管理员角色。它位于所有其他用户角色的顶部,可以访问WordPress定义的所有权限。具有管理员角色的用户可以执行以下操作:

只有管理员可以在WordPress中添加新用户
由于管理员是最强大的角色,因此您应该只将其分配给您信任的人。理想情况下,每个站点应该只有一名管理员。
WordPress多站点 *** 中的管理员角色的定义略有不同,但名称相同。在多站点 *** 中,管理员角色不享有在WP单站点中具有的某些权限,例如安装主题和插件。WordPress为超级管理员角色保留了这些权限。

WordPress中的“编辑”角色仪表盘
编辑器负责管理WordPress网站上的内容。他们可以创建、修改、发布或删除文章和页面,甚至是其他用户创建的文章和页面。他们的一些权限包括:
编辑者不能采取站点管理操作,例如安装插件和主题。他们的主要职责是监督其他作者和贡献者的工作,或者是一个人的内容团队。
提示:如果您自己管理WordPress网站,您可以为自己创建一个具有编辑角色的备用用户。这样,您就可以将您的管理和发布职责分开。即使您的编辑帐户遭到入侵,您的管理员帐户也不会受到黑客攻击。

WordPress中的“作者”角色仪表盘
顾名思义,任何具有Author角色的用户都可以创建、编辑和发布文章。他们还可以上传媒体文件和删除自己的文章,但不能创建页面或编辑其他任何人的文章。
作者可以为他们的文章添加标签并将他们的文章分配给现有的类别,但他们不能创建新的类别。与编辑一样,他们无权访问任何管理职责,例如设置、插件和主题。
注意:作者即使在发布后也可以删除他们的文章。如果您要为任何人分配作者的角色,请确保您可以完全控制他们的文章,包括删除它们。

WordPress中的“贡献者”角色仪表盘
贡献者角色是作者角色的精简版。具有贡献者角色的用户可以创建自己的文章、删除文章的草稿,但不能发布文章。
他们可以保存文章的草稿或将其发送给编辑或管理员进行审查和发布。一旦他们发布了文章,贡献者就无法删除他们的文章。相反,作者可以删除他们发布的文章。
贡献者角色非常适合新作者和来宾贡献者。

WordPress中的“订阅者”角色仪表盘
订阅者角色位于权限排名的更低级别。具有订阅者角色的用户可以管理他们的个人资料并有权阅读网站上的所有文章。差不多就是这样!

您可以将内容限制为仅登录用户,包括订阅者
通常,每个人都有权阅读WordPress网站上的内容。但是,在订阅或会员网站中,只有登录用户才能查看内容。具有订阅者角色的用户可以阅读这些实例中的文章。

WordPress多站点 *** 中的“超级管理员”角色仪表盘
超级管理员角色仅在WordPress多站点安装中可用。此角色取代多站点 *** 中的单站点管理员,并授予对所有高级管理权限的访问权限。
一些可供超级管理员使用的仅限多站点的权限包括:

WordPress多站点 *** 中的“站点”面板

超级管理员仪表盘中的“主题”面板
在多站点 *** 中,只有超级管理员可以安装主题并在整个 *** 中启用它们。个别网站的管理员只能查看和激活已由超级管理员安装的主题。
例如,我在我的 *** 上安装了免费的Astra主题,但我没有为 *** 启用它。因此, *** 中各个子站点的管理员无法在他们的主题面板下看到它。

*** 子站点管理员无法安装新主题
在上面的屏幕截图中,您还可以注意到 *** 中的站点管理员无法访问“插件”菜单。与主题不同,超级管理员可以更改 *** 设置以使管理员能够在其站点上安装和激活插件。

超级管理员可以赋予管理员管理插件的权限

超级管理员还可以“ *** 激活”插件
超级管理员还可以 *** 激活插件,以确保它们被强制用于 *** 上的所有站点。站点管理员无法停用 *** 激活插件。此设置非常适合在整个 *** 中强制执行基本插件。
*** 管理员屏幕
*** 管理员仪表板充当超级管理员管理WordPress Multisite *** 功能的中心枢纽。只有在创建 *** 后具有超级管理员角色的用户才能访问它。

*** 管理员仪表盘包括管理 *** 的独特选项
1. 仪表板
Network Admin Dashboard是有关您的 *** 站点的详细信息的中心枢纽。它使您可以访问所有 *** 设置。
2. 网站

*** 管理仪表盘中的“站点”面板
您可以使用来管理属于多站点 *** 的各个站点。此处列出的站点将是子目录或子域,具体取决于您配置WordPress多站点 *** 的方式。
从这里,您可以向 *** 添加新站点或从 *** 中删除现有站点。
您还可以从此处访问有关站点、用户、主题和整体 *** 设置的信息。您创建的之一个站点是 *** 中的主站点。 *** 从之一个站点的选项继承其所有设置。

将新站点添加到WordPress多站点 ***
单击链接或按钮将带您到上面的屏幕,您可以在其中将新站点添加到您的多站点 *** 。如果您不打算让其他人成为新站点的管理员,您也可以将自己指定为管理员。
3. 用户

*** 管理仪表盘中的“用户”面板
*** 管理仪表板中的允许您管理用户并将到您的多站点 *** 。只有超级管理员可以将用户添加到 *** ,但超级管理员可以修改 *** 设置以使站点管理员能够将新用户添加到他们自己的站点。
4. 主题

*** 管理仪表盘中的“主题”面板
可让您管理站点管理员可访问的主题。它不允许您激活或停用任何网站正在使用的主题,而只能设置任何网站可以使用的主题。
如果您禁用 *** 上任何地方都在使用的主题,即使您禁用它,它也会在该站点上保持活动状态。但如果站点使用另一个主题,则禁用的主题不会出现在 *** 站点的主题面板中。
5. 插件

*** 管理仪表盘中的“插件”面板
允许用户添加或删除 *** 中的插件。添加后,您可以从站点的仪表板激活插件。您还可以从此处 *** 激活插件,以强制在 *** 中的所有站点上使用插件。
默认情况下,站点管理员无法访问其仪表板中的插件菜单。超级管理员可以通过修改 *** 设置为他们启用此权限。

为所有子站点管理员启用插件管理
注意:并非所有WordPress插件都支持多站点 *** 。您需要阅读插件的文档以确认它们是否适用于多站点设置。
6.设置

*** 管理仪表盘中的“ *** 设置”面板
上设置和更改整个 *** 的设置。 *** 的默认设置基于您在设置 *** 时创建的之一个站点。您可以在此处更改的一些 *** 设置是:
在这里,您还可以访问创建 *** 时使用的信息。您可以参考WordPress Codex中的,详细了解所有可用设置选项。
7. 更新

*** 管理仪表盘中的“更新”面板
控制 *** 和单个站点的更新过程。更新面板将显示可用于WordPress核心、主题和插件的任何更新。安装最新版本的WordPress后,您可以通过屏幕将其应用到 *** 上的所有站点。

*** 管理仪表盘中的“升级 *** ”面板
注意:在WordPress单站点安装中,管理员本质上是超级管理员,因为他们可以访问所有管理员权限。
您可以自定义用户角色,也可以使用WordPress的预定义权限创建自己的自定义角色。
虽然 WordPress 自带默认用户角色,但许多插件会引入自己的角色来帮助管理特定功能。
下面是几个例子:
注意:如果您正在使用上述任何插件,请务必仔细分配角色。
角色和权限系统是用户管理WordPress的支柱。以下是它的许多好处:
了解所有用户角色和权限至关重要,但您还需要了解如何在您的站点上有效地管理它们。虽然没有两个WordPress网站完全相同,但您可以遵循一些基本规则来充分利用WordPress的用户角色和权限。
仅为您网站上的每个用户分配他们需要的访问级别。授予更少的权限总是比授予太多权限要好。保护WordPress用户角色对于确保您的网站及其内容安全至关重要。

为每个用户仔细分配用户角色
作为一般规则,每个站点都应该只有一个管理员,并且它应该只对站点进行核心更改。WordPress建议您遵守“”,即您应该只授予用户执行其所需工作所必需的权限。
例如,更好使用编辑级别的用户来管理网站上的内容,而不是使用管理员。如果您的网站上有多个编辑器,请确保您可以信任他们的广泛功能。
将作者角色分配给您可以信任的内容创建者,因为他们可以发布和删除自己的文章。贡献者角色更适合新的内容创建者和来宾文章。
默认的WordPress用户角色很有用,但它们可能并不适合每个用例。例如,让您的作者能够审核评论。
值得庆幸的是,WordPress使我们能够根据我们的独特需求自定义用户角色或创建新角色。您可以通过代码或借助WordPress用户角色插件手动执行此操作。我们将在本文中介绍这两种 *** 。
WordPress Multisite包含用于用户管理的独特设置。其中一些很容易掌握,而另一些则不然。
让我们深入探讨它们。
开箱即用,只有超级管理员可以在 *** 上创建新用户和站点。但是,它们可以允许用户将 *** 上的帐户注册为子站点的订阅者。
要启用此功能,请转到 *** 管理员 > *** 设置 > 注册设置 > 允许新注册,然后启用“用户帐户可能已注册”选项。

允许用户在您的 *** 上注册帐户
在这里,您还可以允许登录用户在您的 *** 上创建新站点。如果您想限制仅为您设置的用户创建站点的权限,您可以勾选此选项。
最后一个选项允许用户注册一个帐户以及在您的 *** 上创建一个站点。在您的 *** 上创建站点的用户被赋予其子站点的管理员角色。
当您在 *** 上创建用户帐户时,或者当用户在您 *** 的任何站点上注册帐户时,他们可以在登录后导航到 *** 内的任何站点。想象一下这是一个像Facebook或Reddit这样的社交 *** ,您可以在其中创建一个帐户并使用相同的用户配置文件访问所有组或子版块。
这是使用WordPress Multisite的主要好处之一。它允许您的用户只需注册一个帐户即可访问您的所有网站。
您可以通过勾选添加新用户选项允许站点管理员将用户添加到他们自己的站点。

允许站点管理员向其子站点添加新用户
如前所述,您可以授予站点管理员访问管理其子站点上的插件的权限, *** 是转到 *** 设置 > 菜单设置并选中启用管理菜单 > 插件选项。
默认情况下,WordPress多站点安装仅允许用户注册整个 *** 。没有选项可以只为一个子站点启用用户注册。您可以使用插件更改此行为。

“Network Subsite User Registration”插件
此插件允许站点管理员启用本地用户注册,并且仅限访问其站点。默认情况下,新用户将担任订阅者角色,但您可以通过修改插件设置来更改此设置。

允许任何人仅在您的子网站上注册帐户
您可以将同一用户分配给 *** 中具有唯一角色的多个站点。当用户登录到其站点的仪表板时,他们可以通过“我的站点”屏幕访问其所有站点的仪表板。

您可以将一个用户分配到WordPress多站点 *** 中的多个站点
超级管理员还可以与其他用户共享他们的权限。您应谨慎启用此选项,并仅将其分配给您可以信任的用户。

授予其他用户 *** 的超级管理员权限
了解WordPress Multisite中的所有用户管理设置将帮助您更好地管理 *** 。要为WordPress Multisite找到其他有用的插件,您可以在WordPress插件库搜索安装。
既然我们已经对 WordPress 的所有默认角色和插件引入的附加角色有了基本了解,下面就来看看如何在 WordPress 中为用户分配/更改角色:







在本节中,我们将探讨在 WordPress 中创建、编辑或删除用户角色的两种简单 *** :使用 WordPress 插件或手动 *** 。这些 *** 将帮助您轻松管理 WordPress 网站上的用户访问和权限。
如果管理 WordPress 用户权限变得难以应付,使用插件可以简化这一过程。有几款插件可以添加、修改和删除 WordPress 用户角色。
本节将介绍的 插件就是一个很受欢迎的选择。这个用户友好型插件提供了许多有效管理 WordPress 用户角色的权限。
让我们从如何使用该插件修改用户角色的权限开始。








这就是如何使用插件轻松更新分配给用户角色的权限。
除了管理员、作者、编辑器等角色外,Role Editor 插件还允许您创建新的 WordPress 角色。请按照以下步骤操作:









到目前为止,我们已经介绍了如何通过添加或删除权限、创建新角色甚至删除角色来修改现有的用户角色。接下来,我将教你如何使用代码创建自定义 WordPress 用户角色。
手动管理 WordPress 用户角色可以让你完全控制权限,允许你根据网站需要创建自定义角色、修改现有角色或删除默认角色。下面,我将一步步指导您完成这一过程。
内容管理系统提供了五个用于管理 WordPress 角色和权限的函数:
如果您想删除 WordPress 的某些默认角色,可以使用 remove_role() 函数来实现。默认情况下,WordPress 包含六个角色:
在本教程中,我将删除除管理员以外的所有用户角色。


remove_role( 'subscriber' ); remove_role( 'editor' ); remove_role( 'contributor' ); remove_role( 'author' );



现在,让我们使用 add_role() 函数创建一个具有特定权限的新用户角色。函数的结构如下
add_role( $role, $display_name, $capabilities );
查看。
假设我们要创建一个权限有限的 Moderator 角色。
我将这样做

add_role('moderator', 'Moderator', array(
'read' => true,
'create_posts' => true,
'edit_posts' => true,
'edit_others_posts' => true,
'publish_posts' => true,
'manage_categories' => true,
));<img decoding="async" style="background-color: #ffffff; color: #333333; font-family: georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px;" title="" src="https://www.cloudways.com/blog/wp-content/themes/cloudways/template/img/grey.gif" data-original="images/image36.png" alt="" class="2345HAO3f53750448391baf img-responsive"><noscript><img decoding="async" style="background-color: #ffffff; color: #333333; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px;" title="" src="images/image36.png" alt="" /></noscript> 

在本例中,让我们将“Moderator”角色分配给名为 Abdul Rehman 的用户:


如果需要通过添加或删除权限来修改现有用户角色,可以使用 add_cap() 和 remove_cap() 函数。
具体操作如下

function modify_editor_capabilities() {$role = get_role('editor');
if ($role)
$role->add_cap('install_plugins');
}
}
add_action('init', 'modify_editor_capabilities');;
现在,当我以编辑身份登录时,我可以看到插件部分现在可以访问了。

下面介绍如何从角色中移除权限:
如果要删除某个权限,请使用remove_cap() :
function remove_editor_capability() {
$role = get_role('editor');
if ($role) {
$role->remove_cap('install_plugins');
}
add_action('init', 'remove_editor_capability');
这将取消编辑角色安装插件的权限。
默认用户角色的编辑权限是自定义它们的快速 *** 。但是,如果您要编辑角色的许多权限,那么更好完全创建一个新的自定义用户角色。通过这种方式,您可以为站点上的每个角色设置所需的确切权限。
要创建自定义用户角色,您需要使用函数。它接受三个参数。
add_role( $role, $display_name, $capabilities );
前两个参数应该是函数运行的字符串(并且是必需的)。它们分别定义新自定义角色的名称和显示名称。最后一个参数是可选的,应该是一个数组。您可以使用它为新角色分配所有权限。
让我们创建一个名为Community Manager的自定义用户角色,他可以在整个站点中审核评论和编辑文章。以下是您的操作 *** :
<?php
/*
Plugin Name: Add Community Manager Role
Version: 1.0
Description: Add a Custom User Role called 'Community Manager'
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: add-community-manager-role
*/
// this code will run only once on plugin activation and never again
function add_community_manager_role() {
add_role(
'community_manager',
__('Community Manager', 'add-community-manager-role'),
array(
'read' => true,
'moderate_comments' => true,
'edit_posts' => true,
'edit_other_posts' => true,
'edit_published_posts' => true
)
);
}
register_activation_hook( __FILE__, 'add_community_manager_role' );
和以前一样,add_role()函数仅在插件激活时运行一次,并且不再运行。保存文件并在管理员仪表盘中激活插件。您现在应该能够将Community Manager角色分配给新用户和现有用户。

将自定义用户角色分配给新用户

将自定义用户角色分配给现有用户
您还可以通过检查数据库中wp_options表下wp_user_roles字段的值来验证分配给此新角色的权限。这是我在我网站的数据库中找到的内容:
array ( 'administrator' => // [...] 'editor' => // [...] 'author' => // [...] 'contributor' => // [...] 'subscriber' => // [...] 'community_manager' => array ( 'name' => 'Community Manager', 'capabilities' => array ( 'read' => true, 'moderate_comments' => true, 'edit_posts' => true, 'edit_other_posts' => true, 'edit_published_posts' => true, ), ), )
最后列出的是我们刚刚添加的具有所有权限的新角色。您可以通过添加或删除权限来进一步编辑此角色。
在将新用户角色分配给任何真实用户之前,必须测试它是否按预期工作。这是一个清单,您可以按照以下清单对其进行测试:
差不多就是这样!现在您可以将新角色分配给您站点的用户。
您可以使用或以插件,只需单击一下即可在您网站上的不同用户帐户之间进行切换。它们对于测试多个用户的权限非常方便。我将在本文后面详细介绍它们。
WordPress多站点处理用户角色的方式与WordPress单站点安装略有不同。虽然您可以像以前一样使用add_role()函数创建自定义用户角色,但新角色仅适用于 *** 的主站点(您创建的之一个站点)。它不会传播到 *** 上的所有子站点。
为确保回调函数中的代码在 *** 中的每个站点上运行,您需要通过逐个循环遍历 *** 的所有站点来强制其执行。对于这个示例,我将创建一个名为Plugin Manager的新用户角色,它将具有管理插件的所有权限。
<?php
/*
Plugin Name: Add Plugin Manager Role
Version: 1.0
Description: Add a custom user role named Plugin Manager in a WordPress Multisite Installation
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: add-plugin-manager-role
*/
/*
make the code run on every site in the network
when the plugin is Network Activated
*/
function add_plugin_manager_role( $network_wide ) {
if ( is_multisite() && $network_wide ) {
// run the code for all sites in a Multisite network
foreach ( get_sites(['fields'=>'ids']) as $blog_id ) {
switch_to_blog( $blog_id );
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
}
restore_current_blog();
}
else {
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
}
}
register_activation_hook( __FILE__, 'add_plugin_manager_role' );
让我们详细看一下上面的代码:
register_activation_hook()函数挂钩插件激活动作并传入您的回调函数。这里,回调函数是add_plugin_manager_role().$network_wide的参数.$network_wide参数是一个布尔值,如果您为整个 *** 激活了插件,它将返回true。如果仅为当前站点启用,则返回false。此外,它仅适用于多站点安装,其默认值为false。is_multisite() && $network_wide条件语句检查插件在多站点安装中是否为“ *** 激活” 。如果是true,它将运行If语句中包含的代码。如果是false,则运行语句中else的代码。get_sites(['fields'=>'ids'])函数返回 *** 中所有站点ID的列表。使用foreach()PHP函数,它循环遍历所有这些代码,以分别在每个网站上运行代码。$blog_id的子网站执行。由于WordPress最初是作为一个博客平台启动的,因此您可以将“blog”一词替换为“site”,以便更好地理解其用法。else语句中的代码是确保与单站点安装兼容的备用代码。保存插件文件并转到 *** 管理 > 插件屏幕以“ *** 激活”您的自定义插件。之后,前往站点的任何编辑站点屏幕下的用户选项卡,检查新的插件管理器角色是否可用。

将现有站点用户的角色更改为新用户角色

将自定义用户角色分配给子站点的新用户
我还确认了这个新用户角色在 *** 中的其他站点上可用。它完美无缺。

将新用户角色分配给子站点上的现有用户
您还可以通过查看您站点的数据库来验证新的自定义角色及其权限。但是,与单站点安装不同,WordPress Multisite为每个子站点创建一个单独的wp_options表。

用户角色存储在WordPress多站点数据库中的位置
您可以找到列为wp_2_options、wp_3_options和wp_4_options的子网站特定表。同样,角色和权限存储在各自的字段中,分别名为wp_2_user_roles、wp_3_user_roles和wp_4_user_roles。
您已经定义了如何在 *** 中的所有站点上创建自定义用户角色,但是将来要创建的站点呢?为确保将此自定义用户角色添加到 *** 中创建的每个新站点,您可以将以下代码附加到您的插件中:
// run the code once again when a new site is created
function add_custom_user_role_new_site( $blog_id ) {
// check whether the plugin is active for the network
if ( is_plugin_active_for_network( 'add-custom-user-role/add-custom-user-role.php' ) ) {
switch_to_blog( $blog_id );
add_role(
'plugin_manager',
__('Plugin Manager', 'add-plugin-manager-role'),
array(
'install_plugins' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'delete_plugins' => true
)
);
restore_current_blog();
}
}
add_action( 'wpmu_new_blog', 'add_custom_user_role_new_site' );
$blog_id参数切换到新站点,使用add_role()函数创建您的自定义角色,然后使用restore_current_blog()函数切换回当前站点。您可以向现有用户角色添加权限以提高其访问级别。例如,您可以赋予编辑器管理插件的权力。或者,也许您希望贡献者对他们自己的文章进行审核。让我们学习如何做到这一点。
注意:如果您不喜欢使用代码,您可以跳过手动 *** ,直接转到下面的用户角色和权限插件部分。或者干脆聘请WordPress开发人员。
您可以使用WordPress 函数向用户角色或任何特定用户添加权限。我将使用一个名为Customize User Role的自定义插件来展示如何使用此函数来赋予Editor角色管理插件的权限。
<?php /* Plugin Name: Customize User Role Version: 1.0 Description: Demonstrating how to customize WordPress User Roles. Author: Salman Ravoof Author URI: https://www.salmanravoof.com/ License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: customize-user-role */
WordPress建议在插件或主题激活时运行此函数,因为它添加的设置存储到数据库中wp_options表中wp_user_roles字段下。每次加载任何页面时都运行此函数效率低下,因为每次加载页面时数据库表都会不断被覆盖。
由于我使用的是插件,因此我将使用函数挂钩到您激活插件时运行的动作。有很多 *** 可以做到这一点,但我使用了一个健壮的基于类的实现来确保没有冲突。
// this code runs only during plugin activation and never again
function sal_customize_user_role() {
require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-user-role.php';
Sal_Customize_User_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_user_role' );
上面的代码在插件激活期间只运行一次。钩子函数sal_customize_user_role引用了一个名为Sal_Customize_User_Role自定义类.
我已经在一个名为的单独文件class-sal-customize-user-role.php中定义了这个类,并将它放在我的插件根文件夹中的一个名为includes的子文件夹中,但你可以随意命名它。
<?php
class Sal_Customize_User_Role {
public static function activate() {
// get the Editor role's object from WP_Role class
$editor = get_role( 'editor' );
// a list of plugin-related capabilities to add to the Editor role
$caps = array(
'install_plugins',
'activate_plugins',
'edit_plugins',
'delete_plugins'
);
// add all the capabilities by looping through them
foreach ( $caps as $cap ) {
$editor->add_cap( $cap );
}
}
}
下面是对上述代码的详细解释:
WP_Role类中检索Editor角色对象并将其分配给$editor变量。install_plugins、activate_plugins、edit_plugins和delete_plugins。但是add_cap()函数只接受一个参数。因此,我们需要在数组中包含所有权限。定义$caps数组以容纳所有这些权限。如果您只添加一项权限,则无需定义数组。add_cap( $cap )函数通过使用PHP函数循环添加$caps数组中定义的所有权限。保存所有插件文件,然后从管理员仪表板激活插件。现在让我们登录到编辑器仪表盘以查看更改。

编辑者现在可以从他们的仪表板管理插件
将与插件相关的权限添加到其用户角色后,编辑者可以看到其管理菜单中列出的插件菜单。

编辑器仪表盘中的“添加插件”屏幕
您可以通过查看存储在WordPress站点数据库wp_options表中的wp_user_roles键值来检查分配给每个用户角色的权限。
以下是我发现分配给编辑角色的权限:
'editor' => array ( 'name' => 'Editor', 'capabilities' => array ( 'moderate_comments' => true, 'manage_categories' => true, // [...lines cut off for brevity...] 'install_plugins' => true, 'activate_plugins' => true, 'edit_plugins' => true, ), ),
请注意最后三行,它使编辑器能够管理插件。
如果要删除这些权限,可以挂钩到函数并使用remove_cap()函数删除插件停用的权限,就像我们在插件激活时添加这些权限一样。
既然您已经了解了如何向用户角色添加权限,那么现在该学习如何从用户角色中删除权限了。
注意:您还可以挂钩动作以在主题(和/或子主题)激活期间触发此代码。在这里,您必须在主题或的(推荐)functions.php文件中包含代码。
有时,您可能希望从用户角色中删除一项权限。您可以运行函数来删除角色或特定用户的权限。例如,delete_published_posts从Author用户角色中删除发布文章权限是一个好主意。
让我们完成这件事!
我将创建一个名为Customize Author Role的新自定义插件来开始。就像以前一样,我将通过挂钩register_activation_hook()函数只运行此代码一次。
<?php
/*
Plugin Name: Customize Author Role
Version: 1.0
Description: Demonstrating how to customize WordPress Author Role.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: customize-author-role
*/
// this code runs only during plugin activation and never again
function sal_customize_author_role() {
require_once plugin_dir_path( __FILE__ ).'includes/class-sal-customize-author-role.php';
Sal_Customize_Author_Role::activate();
}
register_activation_hook( __FILE__, 'sal_customize_author_role' );
接下来,我将在文件中定义Sal_Customize_Author_Role类。我在上面的主插件文件class-sal-customize-author-role.php中引用了这两个资源。
<?php
class Sal_Customize_Author_Role {
public static function activate() {
// get the Editor role's object from WP_Role class
$author = get_role( 'author' );
// remove the capability to delete published posts from an Author role
$author->remove_cap( 'delete_published_posts' );
}
}
remove_cap( 'delete_published_posts' )函数将删除从作者角色中删除已发布文章的权限。

默认情况下,允许作者删除其已发布的文章
是时候保存所有插件文件然后激活插件了。现在,登录到作者仪表盘并查看更改。

作者不能再删除他们发布的文章
回收站选项不再适用于作者发布的文章。但是,他们仍然可以删除处于草稿或待处理状态的未发布文章。

如果您甚至想禁用此权限,则还需要从作者角色中删除delete_posts权限。
如果您想为特定用户添加权限,而不是整个用户角色,那么您可以使用类函数来添加权限。
// get the user object by their ID $user = new WP_User( $user_id ); // add the capability to the specific user $user->add_cap( $cap );
您可以使用函数通过使用他们的电子邮件、登录用户名或slug来检索任何用户的ID。
同样,您可以使用类函数从特定用户中删除权限。
// get the user object by their ID $user = new WP_User( $user_id ); // add the capability to the specific user $user->add_cap( $cap );
像以前一样,仅在插件或主题激活时运行这些权限以保持代码优化。
注意:add_cap()和remove_cap()都是WP_Role类的对象 *** 。您不能直接在代码中调用它们。您需要使用get_role()函数或$wp_roles全局变量来访问它们。
您可以通过克隆现有用户角色的所有权限来创建新用户角色。您可以这样做:
add_role( 'clone', 'Clone', get_role( 'administrator' )->capabilities );
在上面的示例中,我正在创建一个名为Clone的新角色,该角色具有与管理员相同的权限。在主题或插件激活上运行此代码将确保克隆的角色仅添加一次。
对于大多数用例来说,使用WordPress的内置权限编辑现有用户角色和创建新的自定义角色就足够了,但您可能希望为自定义代码(使用插件或主题)引入的函数定义新权限。
然后,您可以使用这些自定义权限来定义新角色或将它们添加到现有角色中。
例如,添加了额外的权限和角色以及其广泛的电子商务权限。它添加的一些权限是:
使用这些权限,它添加了两个新的用户角色:Customer和Shop Manager。

WooCommerce添加自己的用户角色
客户角色与订阅者角色几乎相似,不同之处在于具有客户角色的用户可以编辑其帐户信息并查看当前/过去的订单。Shop Manager角色包括编辑器的所有权限,此外还授予他们所有WooCommerce权限。
其他引入自定义权限和/或角色的插件包括、、和。
如果您深入研究所有这些插件的文档,您会注意到它们几乎将所有自定义权限都与它们定义的自定义文章类型联系在一起。在WooCommerce的情况下,它是Products和Orders自定义文章类型,而在其他情况下,它分别是Events、Portfolios、Translations和Customers。
让我们学习如何创建绑定到自定义文章类型的自定义权限。
首先,设置一个插件并注册您想要的自定义文章类型。在我的示例中,我正在注册一个名为Stories的新自定义文章类型。
<?php
/*
Plugin Name: Custom Post Type and Capabilities
Version: 1.0
Description: Register a custom post type and define custom capabilities tied into it.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: custom-post-type-capabilities
*/
// register a custom post type, in this case it's called "story" //
function cpt_story_init() {
$labels = array(
'name' => _x( 'Stories', 'custom-post-type-capabilities' ),
'singular_name' => _x( 'Story', 'custom-post-type-capabilities' ),
'menu_name' => _x( 'Stories', 'Admin Menu text', 'custom-post-type-capabilities' ),
'name_admin_bar' => _x( 'Story', 'Add New on Toolbar', 'custom-post-type-capabilities' ),
'add_new' => __( 'Add New', 'custom-post-type-capabilities' ),
'add_new_item' => __( 'Add New Story', 'custom-post-type-capabilities' ),
'new_item' => __( 'New Story', 'custom-post-type-capabilities' ),
'edit_item' => __( 'Edit Story', 'custom-post-type-capabilities' ),
'view_item' => __( 'View Story', 'custom-post-type-capabilities' ),
'all_items' => __( 'All Stories', 'custom-post-type-capabilities' ),
'search_items' => __( 'Search Stories', 'custom-post-type-capabilities' ),
'parent_item_colon' => __( 'Parent Stories:', 'custom-post-type-capabilities' ),
'not_found' => __( 'No stories found.', 'custom-post-type-capabilities' ),
'not_found_in_trash' => __( 'No stories found in Trash.', 'custom-post-type-capabilities' ),
'featured_image' => _x( 'Story Cover Image', 'custom-post-type-capabilities' ),
'set_featured_image' => _x( 'Set cover image', 'custom-post-type-capabilities' ),
'remove_featured_image' => _x( 'Remove cover image', 'custom-post-type-capabilities' ),
'use_featured_image' => _x( 'Use as cover image', 'custom-post-type-capabilities' ),
'archives' => _x( 'Story archives', 'custom-post-type-capabilities' ),
'insert_into_item' => _x( 'Insert into story', 'custom-post-type-capabilities' ),
'uploaded_to_this_item' => _x( 'Uploaded to this story', 'custom-post-type-capabilities' ),
'filter_items_list' => _x( 'Filter stories list', 'custom-post-type-capabilities' ),
'items_list_navigation' => _x( 'Stories list navigation', 'custom-post-type-capabilities' ),
'items_list' => _x( 'Stories list', 'custom-post-type-capabilities' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'menu_icon' => 'dashicons-book',
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'story' ),
'capability_type' => array ( 'story', 'stories' ),
'map_meta_cap' => true,
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 6,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
'show_in_rest' => true,
);
register_post_type( 'story', $args );
}
add_action( 'init', 'cpt_story_init' );
以下是上述脚本的细分:
init动作以运行此函数。register_post_type()函数接受两个参数。之一个是自定义文章类型的名称,第二个是包含用于注册文章类型的所有参数的数组。$args变量包含您将传递给register_post_type()函数的所有参数。它的一个参数(‘labels’)本身就是一个单独定义为$label变量的数组。'capability_type' => 'post'参数。它是WordPress用于为自定义文章类型构建读取、编辑和删除的默认权限类型。capability_type参数的值替换为自定义权限的首选名称。它接受字符串或数组作为参数。如果您的自定义权限的复数不遵循标准的s后缀语法(例如book/books vs story/stories),该数组很有用。capabilities参数以不同于WordPress自动命名的方式命名新权限。map_meta_cap参数设置为,true以便WordPress知道它需要按照建议映射自定义权限。接下来,您需要将自定义权限添加到要授予对Stories自定义文章类型的访问权限的角色。对于此示例,我将权限授予管理员和编辑者角色。
// add the custom capabilities to the desired user roles
$roles = array( 'editor','administrator' );
foreach( $roles as $the_role ) {
$role = get_role($the_role);
$role->add_cap( 'read' );
$role->add_cap( 'read_story');
$role->add_cap( 'read_private_stories' );
$role->add_cap( 'edit_story' );
$role->add_cap( 'edit_stories' );
$role->add_cap( 'edit_others_stories' );
$role->add_cap( 'edit_published_stories' );
$role->add_cap( 'publish_stories' );
$role->add_cap( 'delete_others_stories' );
$role->add_cap( 'delete_private_stories' );
$role->add_cap( 'delete_published_stories' );
}
保存文件,然后激活插件。您现在应该在管理员或编辑器仪表盘中看到Stories链接和面板。

WordPress仪表盘中的“Stories”自定义文章类型面板
如果您检查站点上可用的权限,您还将看到我们添加的所有与Stories相关的权限。在这里,我使用View Admin As插件来检查权限。

与“Stories”自定义文章类型相关的自定义权限
您可以通过下载此插件的扩展版本。它使用一组自定义权限注册了一个名为Projects的自定义文章类型。然后,它会将他们分配给名为Student和Teachers的两个自定义角色, 以帮助您建立一个教育网站。
有一种 *** 可以定义自定义权限,允许用户根据他们的角色访问您的插件设置。讨论如何执行此操作超出了本文的范围,但您可以以获取更多信息。
知道如何使用代码调整用户角色和权限固然很棒,但并不适合所有人。如果您不确定自己在做什么,那么很多事情都会出错。但是,即使您使用的是插件,了解角色和权限在WordPress中的工作方式也会有很大帮助。
让我们看一些更流行的WordPress插件,以轻松自定义WordPress用户角色和权限。我还将列出一些有用的插件来快速测试角色和权限特性。

WordPress插件-User Role Editor
是WordPress插件库中更流行的角色和权限管理插件。它带有一个简单的界面,允许任何人只需单击一下即可编辑用户角色和权限。
安装并激活插件后,您可以转到管理仪表板中的用户 > User Role Editor以访问其主界面。

User Role Editor仪表盘
以下是上面标记的仪表盘部分的详细概述:

以人类可读的形式显示权限
要自定义任何用户角色,只需勾选或取消勾选您想要的权限,然后单击Update按钮以保存您的更改。就这么容易。

在User Role Editor中添加新角色
单击Add Role按钮以创建新角色。您可以使用Make copy of下拉选项从头开始创建角色或复制现有角色。

轻松重命名“角色显示名称”
您还可以通过单击Rename Role按钮来重命名Role Display Name。但是,您不能更改其Role ID(或角色名称)。一种解决 *** 是复制要更改其ID的角色,然后删除原始角色。

在User Role Editor中添加新权限
您可以通过单击Add Capability按钮来添加新权限。

轻松删除未分配的用户角色
单击Delete Roles按钮可让您删除尚未分配给任何用户的自定义角色。
注意:User Role Editor不允许您删除WordPress的内置角色或权限。如果它分配给任何用户,它也不允许您删除任何自定义角色,如果它分配给任何非管理员角色,它也不允许您删除任何自定义权限。

User Role Editor中的“Delete Capability”按钮
您应该注意,仅当未将任何权限分配给非管理员时,才会显示Delete Capability按钮。否则它是隐藏的。
您还可以为同一用户分配多个角色,或者根本不给他们任何角色。

剥离用户的任何角色
要为用户分配多个角色,您需要转到仪表板中的“Users”面板,然后单击将鼠标悬停在用户名上后将在下面看到的“Capabilities”链接。

为同一用户分配多个角色
如果您在管理仪表盘中转到Settings > User Role Editor,您还将找到用户角色编辑器插件的其他选项。

User Role Editor的“General”选项选项卡
在这里,您可以更改插件的默认设置、安装附加模块、更改分配给新用户的默认角色,甚至将用户角色和权限重置为默认状态。

附加模块可帮助您扩展User Role Editor的功能

为新用户设置默认角色

将所有用户角色和权限重置为其默认状态
虽然User Role Editor的免费版本对于大多数用例来说已经绰绰有余,但其包括更多功能,包括支持在WordPress多站点设置中管理角色和权限。

MemberPress开放的WordPress插件-Members
Members是WordPress的一个以会员为中心的用户角色和权限插件。最初作为一个简单的用户角色和权限管理插件推出,它后来转向会员功能。

Members中的“Roles”面板
安装并激活插件后,您可以通过转到仪表板中的Members> Roles来查看站点上的所有可用角色。
成员插件允许您删除所有角色,包括内置的WordPress角色,除了管理员和默认角色。您还可以Edit和Clone角色,以及列出分配给特定角色的所有用户。

Members中的“Edit Role”面板
在“Edit Role”面板中,您可以通过勾选和取消勾选相关复选框来授予或明确拒绝特定角色的权限。您还可以从此处向角色添加自定义权限。

Members中的“Add New Role”面板
单击“Add New Role”链接将带您进入一个类似的屏幕,您可以在其中通过给它一个显示名称、一个ID和它的一组权限来创建一个新角色。

Members中的“General Settings”面板
就像使用User Role Editor一样,您可以使用Members为用户分配多个角色。您还可以设置内容权限以将内容限制为仅具有特定角色的用户。

您还可以在Members中启用“Private Site”模式
在这里,您可以将您的网站及其提要设置为私有。此外,您可以通过强制身份验证来限制对WordPress的REST API的访问。

Members插件的各种附加组件
Members插件以其惊人的附加组件与其他角色和权限插件区分开来。它们可帮助您向网站添加大量附加权限,例如用户隐私和个人数据管理 ( )、与标签和类别相关的权限、建立角色层次结构等等。

Members与流行的WordPress插件集成
您可以将Members与许多流行的WordPress插件无缝集成。例如,您可以使用它来创建和管理的自定义权限。它集成的其他一些插件包括、GiveWP、Meta Box和WooCommerce。
以会员为中心的会员附加组件(付款、订阅、电子邮件营销和高级内容保护)仅在上可用。

“WPFront User Role Editor”插件
可帮助您在WordPress站点中创建、编辑或删除用户角色和权限。它的功能集类似于之前讨论的插件,但它有两个突出的功能。

管理仪表板中的屏幕并将属于特定用户角色的所有用户迁移到另一个。您甚至可以为您的用户分配次要角色。
如果您必须将站点上的大量用户从一个角色迁移到另一个角色,此功能将非常方便。

WPFront User Role Editor中的“登录重定向”设置屏幕
WPFront User Role Editor的另一个有用功能是基于角色的登录重定向。例如,您可以在具有编辑角色的用户登录后将其重定向到文章页面。您还可以选择阻止他们访问/wp-admin页面并查看前端的工具栏。

“Advanced Access Manager”插件
(AAM) 是一个功能强大的WordPress插件,可让您控制网站的几乎所有方面。它包括200多个不同的功能,专为了解角色和权限如何工作的高级WordPress用户而设计。
与上面列出的插件相比,AAM的功能要多得多。但由于这是一个以开发人员为中心的插件,因此对于初学者或中级用户来说并不容易使用。

Advanced Access Manager中的主仪表盘
您可以将AAM的主仪表盘分成四个不同的区域。我在上图中对它们进行了编号,并在下面进行了概述。

Advanced Access Manager中的“设置”面板
AAM根据其行为和使用情况将其设置分为5组。

Advanced Access Manager中的“附加组件”面板
AAM是一个面向开发人员的插件,不仅限于用户角色和权限。它使您可以精细控制每个角色在您的网站上可以或不能做什么。

为您的网站安装“访问策略”以确保其安全
您可以使用AAM为您的网站设置。它定义了哪个角色以及在什么条件下可以访问您网站上的各种资源。如果您想立即开始,您可以从安装准备安装的访问策略。

用于添加前端登录表单的“AAM安全登录”小工具
AAM允许您创建临时用户帐户和角色。这是一种与外部资源共享帐户的安全方式。临时用户帐户将在您设置的日期和时间后过期。对于临时角色,用户将在指定期限后被剥夺该角色。
本文无法涵盖AAM的所有功能。您可以参考以了解有关其所有广泛功能的更多信息。
提示: 是高级访问管理器的一个不错的替代品,尽管它的功能较少且不经常更新。

WordPress插件-“User Switching”
允许您只需单击一下即可在不同的WordPress用户帐户之间进行切换。如果您正在测试大量用户角色和权限,使用此插件将帮助您节省大量时间。用户切换使用来记住您切换的帐户,以便您可以立即切换回它们。
安装并激活插件后,访问仪表盘中的Users菜单。您将看到每个用户的Switch To链接。单击此按钮将切换到您想要的用户。

单击“Switch To”链接以切换到您想要的用户
您可以通过单击仪表盘或用户配置文件屏幕中的Switch back to链接来切换回原始帐户。

您还可以暂时Switch Off您的管理员帐户,以查看您的前端对访问者的显示方式。

只需单击一下即可打开和关闭您的帐户
作为一项安全措施,只有具有编辑用户权限的用户才能切换用户帐户。默认情况下,只有管理员在WordPress单站点安装中具有此权限,而在多站点 *** 中,只有超级管理员具有此权限。
为了进一步简化用户切换,您可以安装扩展以使Switch to user链接出现在您的管理栏中。

将“Switch to user”链接添加到您的管理栏

WordPress插件-“View Admin As”
是一个高级用户切换插件,还包括角色和权限管理器。与User Switching插件不同,您无需安装扩展程序即可将用户切换菜单添加到管理栏。默认情况下,View Admin As会将其所有主菜单项添加到管理栏。

管理栏中的“View As”菜单
即使不存在具有这些角色的用户,您也可以在现有用户或角色之间切换(通过承担他们的权限)。单击Site visitor链接将带您到站点的前端,在那里您可以作为普通用户测试站点功能,而无需离开浏览器的选项卡。
View Admin As允许您临时更改自己的权限。由于它是以非破坏性方式完成的,因此您不会失去对主要功能的访问权限。

为当前用户临时自定义权限
切换到用户帐户后,您可以直接从菜单编辑他们的屏幕首选项和设置。您还可以分别在前端和后端切换语言/区域设置。
您不限于一种视图类型,因为您可以组合各种选项并同时应用它们。
View Admin As附带两个可选模块,您可以根据需要启用它们。

查看管理员身份设置和可选模块
之一个模块添加了Role Defaults功能,可让您为所有角色设置默认屏幕设置。您可以将这些默认设置应用于角色、单个用户或未来的新用户。
第二个模块启用Role Manager功能。您使用此模块对角色和权限所做的任何更改都是永久性的。与其他角色编辑器插件不同,此模块将允许您通过自动将分配给用户的角色迁移到另一个角色来删除分配给用户的角色。
您可以参考以了解有关其广泛功能的更多信息。
WordPress角色和权限是用户访问管理背后的基本概念。它们可以帮助您控制您网站上的所有用户可以执行的操作。许多插件和主题也使用它们向WordPress核心添加非常有用的权限。
WordPress有自己的一组角色和权限,但如果您需要更大的灵活性,您可以自定义它们或创建自己的角色和权限。您可以使用自己的代码或使用第三方插件来执行此操作。
了解什么是角色和权限,并学习如何管理它们,是掌握WordPress的关键步骤。今天就开始使用它们吧!
确保为您的WordPress网站正确设置安全性非常重要,尤其是在保护自己免受黑客攻击方面。您可以实施许多不同的增强功能和最佳WordPress安全实践,以确保您的网站被锁定。 如果您的WordPress网站通过HTTPS运行,那么我们建议实施的增强功能之一是HSTS安全标头,因为它可以帮助防止...
大多数WordPress主机,包括自动备份,允许您在紧急情况下恢复。但是,有时您可能需要手动恢复和/或上传您自己的MySQL数据库。 这可能是因为您正在迁移主机,或者您可能想要进行一些本地开发。在任何情况下,您都可以按照以下有关如何使用phpMyAdmin恢复MySQL数据库的快速简便教程进行...
由于WordPress的流行,它已成为网络攻击的常见目标。事实上,容易受到黑客攻击。 被黑网站的一些最常见迹象包括网页被破坏、指向恶意网站的链接、谷歌黑名单警告和白屏死机。如果这些迹象之一出现在您的WordPress网站上,则它可能已被入侵或感染了恶意软件。 一旦您确认您正在运行一个被黑的W...
网站安全应该是每个人的头等大事。我们必须竭尽全力保护数据和用户的安全,因为不这样做的潜在后果是巨大的。 虽然保护通常侧重于开发人员和用户的行为,但服务器主机的关键作用有时会被忽视。 一个安全的虚拟主机环境是整个等式中至关重要的一部分。即使是最有经验的开发人员也不一定能抵御威胁。这可以让你放心...
在寻找虚拟主机时,很容易被诱人的价格、时尚的仪表盘和速度承诺所吸引。许多主机提供商在强调这些方面的同时,往往忽略了安全等关键功能。 这是因为人们被视觉吸引力和经济实惠所吸引,而没有深入了解真正重要的东西–托管环境的安全性如何。 在选择主机时,安全应放在首位。这不仅仅是寻找一个声称提供安全的服...
管理多个网站的机构通常会选择 ,因为它具有灵活性和可控性。大学、媒体公司、非营利组织和机构都使用它从一个 WordPress 安装中运行多个网站。每个网站可以拥有自己的用户、内容和域,而网络则共享插件、主题和核心文件。这种设置简化了维护,减少了重复,并有助于团队更快地扩展。 但这种便利也带来了...