使用技巧

WordPress用户角色和功能的终极指南

WordPress用户的“角色和功能”使您能够控制其他用户可以或不能在您的站点上执行的操作。您可以使用它们来管理用户操作,例如编写和编辑帖子,创建新页面,审核评论,安装插件,添加新用户等等。

了解用户角色和权限对于管理任何WordPress网站至关重要。例如,如果要为客户端构建站点,则不希望他们编辑或更改已安装的主题。同样,让多作者博客的作者安装或删除插件是不明智的。

学习如何聪明地管理WordPress用户角色将帮助您简化工作流程,确保网站安全,并最终控制您的网站。

在本指南中,您将了解WordPress用户角色,WordPress提供的各种功能,如何编辑现有用户角色,如何在多站点上管理用户以及使用一组新功能创建新角色。

激动吗 让我们潜入吧!

什么是WordPress用户角色和功能?

角色和功能是WordPress中用户访问管理的基础。要了解WordPress中的用户角色,您首先需要知道什么功能。

WordPress定义了用户可以作为功能执行的任何操作。以下是WordPress中可用功能的一些示例以及在其代码中如何引用它们:

  • 阅读帖子(已阅读)
  • 撰写和编辑帖子(edit_posts)
  • 发布帖子(publish_posts)
  • 安装插件(install_plugins)
  • 删除主题(delete_themes)
  • 创建用户(create_users)
  • 中度评论(moderate_comments)

大多数功能的名称都是不言自明的。WordPress的核心内置了70多种硬编码功能。

角色是可以分配给用户的功能的集合。每个WordPress用户都需要分配一个角色。用户只能执行其角色授予他们的操作。

该图显示了如何在具有功能的WordPress中定义WordPress角色

“角色”是“功能”的集合

在上图中,具有角色1的任何用户都可以阅读帖子,但不能编辑帖子。具有角色2的用户可以阅读和编辑帖子,但是不能发布帖子。具有角色3的任何用户都可以阅读,编辑和发布帖子,但不能删除帖子,与可以删除帖子的角色4用户不同。

WordPress用户角色

WordPress仪表板中的“添加新用户”面板

WordPress使用其许多本机功能来定义其默认用户角色。例如,它授予管理员和编辑者publish_pages的功能,但不将其分配给订阅者和贡献者。

WordPress管理控制台中的“用户”面板

WordPress仪表板中的“用户”面板

至少,每个WordPress用户都有一个用户名,密码,电子邮件地址和角色。

phpMyAdmin显示WP数据库在何处存储功能

phpMyAdmin显示WP数据库在何处存储功能

WordPress将所有基于角色的功能存储在其数据库中序列化的wp_user_roles选项下的wp_options表中。WP_Roles核心类用于定义如何在数据库中存储角色和功能。

WP_Roles类

WordPress使用User Roles API实现角色和功能,其中大多数基于WP_Roles核心类。您可以在wp-includes / class-wp-roles.php文件中找到其源代码。

如果您浏览数据库,您会发现角色位于定义了角色名称的数组中。角色名称键将用户角色名称存储为名称键的值,所有功能存储在单独的数组中作为功能键的值。

数组(
    ‘rolename’=>数组(
        ‘name’=>’rolename’,
        ‘capabilities’=> array()
    )

WP_Roles类定义了许多方法。您可以在代码中的任何位置调用它们,以与用户角色API进行交互。

注意:WordPress包括另一个称为WP_Role的核心类(请注意单数“ Role”)。它用于扩展用户角色API。

当您反序列化wp_user_roles的键值时,它将看起来像这样:

array(
  ‘administrator’=>
  array(
    ‘name’=>’Administrator’,
    ‘capabilities’=>
    array(
      ‘switch_themes’=> true,
      ‘edit_themes’=> true,
      ‘activate_plugins’=> true,
      // [。 ..为简洁起见,其余行被剪掉…]
    ),
  ),
  ‘editor’=>
  array(
    ‘name’=>’Editor’,
    ‘capabilities’=>
    array(
      ‘moderate_comments’=> true,
      ‘manage_categories ‘=> true,
      ‘manage_links’=> true,
      // […为了简洁起见,其余的行将被剪掉…]
    )
  ))
  ‘author’=>
  array(
    ‘name’=>’Author’,
    ‘capabilities’=>
    array(
      ‘upload_files’=> true,
      ‘edit_posts’=> true,
      ‘edit_published_posts’=> true,
      // […其余行简要…]
    ),
  ),
  ‘贡献者’=>
  数组(
    ‘名称’=>’贡献者’,
    ‘功能’=>
    数组(
      ‘edit_posts’=> true,
      ‘read’=> true,
      // [。 ..为简洁起见,其余行被剪掉…]
    ),
  ),
  ‘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 Codex包括一个简单的功能与角色表,尽管不是那么直观。总结了默认用户角色在单站点和多站点WordPress设置中可以执行的所有操作。在设置了一定数量的功能之后会有一个休息时间,以使您轻松区分高级功能和低级功能。

为了一目了然地更好地表示所有WordPress角色和功能,您可以查看Exygy的这张出色的表格。

与古腾堡可重复使用块相关的功能

WordPress的Gutenberg块编辑器引入了一个惊人的功能,称为可重用块。它允许您将整个块(或多个块)另存为模板,并在您站点的其他任何地方使用它。

在WordPress的新Gutenberg块编辑器中添加“可重用块”

在WordPress的新Gutenberg块编辑器中添加“可重用块”

因此,WordPress还引入了以下与可重用块相关的新功能:

  • 创建可重复使用的块
  • 编辑可重复使用的块
  • 读取可重复使用的块
  • 删除可重复使用的块

上面列出的功能与帖子相关的功能类似。管理员或编辑者可以访问所有与可重用块相关的功能,而作者只能编辑或删除由它们创建的可重用块。贡献者只能读取可重用的块。

特殊功能:未经过滤的上传

未经过滤的上传是一项特殊功能,默认情况下不会分配给任何用户角色,包括管理员或超级管理员。它允许用户上传具有任何扩展名的文件(例如SVG或PSD),而不仅仅是WordPress列入白名单的文件。

注意:您可以使用wp_get_mime_types()函数获取WordPress支持的mime类型和文件扩展名的列表。

要启用此功能,您需要将下面的以下代码片段添加到wp-config.php文件中。在要求您停止编辑的行之前定义常数。

define(’ALLOW_UNFILTERED_UPLOADS’,true);

定义此常数后,您可以在WordPress单站点安装Unfiltered Upload功能中赋予任何用户角色。但是,在多站点安装中,只有超级管理员才能具有此功能。

例如,如果要将unfiltered_upload功能分配给编辑器,则可以在WordPress代码中的任何位置添加以下代码(理想情况下,仅在主题/插件激活时运行):

<?php

$ role = get_role(’editor’);
  $ role-> add_cap(’unfiltered_upload’);

?>

在本文的后面,我们将详细讨论如何添加或自定义所有用户角色或特定用户的功能。

原始功能与元功能

WordPress主要有两种功能:

  • 原始功能:这些功能被授予特定角色。具有这些角色的用户会自动继承原始功能。
  • 元功能:默认情况下,不将这些功能授予任何角色。WordPress检查其代码和数据库中的某个对象,例如帖子,页面,用户或任何分类法,如果逻辑检查出,它将“元”功能“映射”到一个或多个原始功能。

例如,WordPress授予作者自己的帖子的edit_posts功能,以便他们能够对其进行编辑。但是,此功能不允许他们编辑其他用户的帖子。这就是元功能的帮助。

WordPress使用map_meta_cap()函数返回绑定到特定对象的原始功能数组。然后,将它们与用户对象进行比较,以检查用户是否可以编辑帖子。

元功能的其他一些示例是read_post,delete_post,remove_user和read_post。我们将在下面的自定义功能部分中对它们进行更深入的研究。

/ *单击鸣叫* /
正文a.novashare-ctt {
display:block;
背景:#00abf0;
边距:30px自动;
填充:20px 20px 20px 15px;
颜色:#ffffff;
文字修饰:无!重要;
box-shadow:无!重要;
-webkit-box-shadow:无!重要;
-moz-box-shadow:无!重要;
边框:无;
左边框:5px实线#00abf0;
}
body a.novashare-ctt:hover {
color:#ffffff;
左边框:5px实线#008cc4;
}
正文a.novashare-ctt:visited {
color:#ffffff;
}
body a.novashare-ctt * {
指针事件:无;
}
正文a.novashare-ctt .novashare-ctt-tweet {
显示:块;
font-size:18px;
行高:27px;
底边距:10px;
}
body a.novashare-ctt .novashare-ctt-cta-container {
display:block;
溢出:隐藏;
}
body a.novashare-ctt .novashare-ctt-cta {
float:right;
}
body a.novashare-ctt.novashare-ctt-cta-left .novashare-ctt-cta {
float:left;
}
body a.novashare-ctt .novashare-ctt-cta-text {
font-size:16px;
行高:16px;
垂直对齐:中间;
}
正文a.novashare-ctt .novashare-ctt-cta-icon {
margin-left:10px;
显示:inline-block;
垂直对齐:中间;
}
正文a.novashare-ctt .novashare-ctt-cta-icon svg {
vertical-align:middle;
高度:18px;
}
/ *简单+简单替代主题* /
正文a.novashare-ctt.novashare-ctt-simple {
背景:无;
填充:10px 0px 10px 20px;
颜色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple-alt {
背景:#f9f9f9;
填充:20px;
颜色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple:hover,正文a.novashare-ctt.novashare-ctt-simple-alt:hover {
border-left:5px solid#008cc4;
}
正文a.novashare-ctt.novashare-ctt-simple .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt .novashare-ctt-cta {
颜色:#00abf0;
}
正文a.novashare-ctt.novashare-ctt-simple:hover .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt:hover .novashare-ctt-cta {
颜色:#008cc4;
}
💡了解WordPress用户角色和功能=一个更安全的网站+让您和您的客户放心。了解更多信息👇单击以鸣叫
六个默认WordPress用户角色

WordPress包括六个预定义的用户角色。WordPress安装的第一个用户默认情况下具有管理员角色(或WordPress多站点安装具有Super Admin角色)。

自从WordPress在发展成为功能强大的CMS之前,它最初是一个博客平台,因此它定义了大多数用户角色,以便在网络上发布内容。它的其他预定义用户角色是编辑者,作者,贡献者和订阅者。

默认WordPress用户角色显示为按功能顺序排列的一堆圆柱体

默认的WordPress用户角色按功能顺序堆叠

想象一下默认的WordPress用户角色是代表各种功能的堆叠圆柱体的集合。最大的圆柱具有最大的功能,第二大的圆柱具有第二的功能,最小的圆柱具有最小的功能。

您不应认为一个角色优于另一个角色。而是将角色视为在站点内设置用户的职责。

用户角色永远不会优越,也不会逊色,它准确地定义了它的作用。

Now let’s look at all the predefined WordPress user roles in detail.

Administrator

WordPress中的“管理员”角色仪表板

The ‘Administrator’ role dashboard in WordPress

WordPress assigns the first user of any single-site installation the Administrator role. It sits at the top of all other user roles and has access to all the capabilities defined by WordPress. Users with the Administrator role can perform actions such as:

  • Create and delete users
  • Install and manage plugins and themes
  • Edit plugins, themes, files, and code

默认情况下,只有管理员可以在WordPress中添加新用户

Only Administrators can add new users in WordPress

Since an Administrator is the most powerful role, you should assign it only to those you trust. Ideally, there should be just one administrator per site.

The Administrator role in a WordPress Multisite network is defined a bit differently, though it’s called the same. In a Multisite network, the Administrator role doesn’t enjoy some capabilities it does in a WP single-site, like installing themes and plugins. WordPress reserves those capabilities for the Super Admin role.

Editor

WordPress中的“编辑”角色仪表板

The ‘Editor’ role dashboard in WordPress

An Editor takes care of managing content in a WordPress site. They can create, modify, publish, or delete posts and pages, even those that are created by other users. Some of their capabilities include:

  • Delete published posts and pages
  • Moderate comments
  • Manage links and categories
  • Edit other users’ posts and pages

Editors cannot take site administration actions such as installing plugins and themes. Their chief responsibility is to oversee the work of other authors and contributors or be a one-person content team.

Tip: If you’re managing a WordPress site on your own, you can create an alternate user for yourself with the role of an editor. This way you can keep your admin and publishing duties separate. Your admin account is safe from hackers even if your editor account gets compromised.

Author

WordPress中的“作者”角色仪表板

The ‘Author’ role dashboard in WordPress

As the name suggests, any user with an Author role can create, edit, and publish posts. They can also upload media files and delete their own posts, but they cannot create pages or edit anyone else’s posts.

Authors can add tags to their posts and assign their posts to existing categories, but they cannot create new categories. Like with editors, they don’t have access to any administrative duties such as settings, plugins, and themes.

Note: An Author can delete their posts even after they’re published. If you’re assigning anyone the role of an Author, make sure you’re fine with them having complete control over their posts, including deleting them.

Contributor

WordPress中的“贡献者”角色仪表板

The ‘Contributor’ role dashboard in WordPress

The Contributor role is a lite version of the Author role. A user with a contributor role can create their own posts, delete drafts of their posts, but they cannot publish the posts.

他们可以保存帖子草稿,也可以将其发送给编辑者或管理员以进行审核和发布。并且,一旦他们发布了帖子,贡献者就无法删除他们的帖子。相反,作者可以删除其发表的帖子。

对于新作者和来宾贡献者,“贡献者”角色是理想的选择。

订户

WordPress中的“订阅者”角色仪表板

WordPress中的“订阅者”角色仪表板

订户角色位于功能排名的最低等级。具有订阅者角色的用户可以管理其个人资料,并有权阅读该网站上的所有帖子。差不多了!

仅将WordPress中的内容限制为特定的用户角色

您可以将内容限制为仅包括登录用户在内的登录用户

通常,每个人都有权阅读WordPress网站上的内容。但是,在订阅或会员站点中,只有登录用户才能查看内容。具有订阅者角色的用户可以阅读这些实例中的帖子。

超级管理员

WordPress多站点网络中的“超级管理员”角色仪表板

WordPress多站点网络中的“超级管理员”角色仪表板

超级管理员角色仅在WordPress多站点安装中可用。该角色取代了多站点网络中的单站点管理员,并提供了对所有高级管理员功能的访问权限。

超级管理员可以使用的某些“仅限多站点”功能是:

  • 创建,管理和删除网络站点
  • 管理网络用户,插件,主题和选项
  • 升级多站点网络上的所有站点
  • 设置多站点网络
  • 将管理员分配给网络的各个站点

WordPress多站点网络中的“站点”面板

WordPress多站点网络中的“站点”面板

超级管理控制台中的“主题”面板

超级管理控制台中的“主题”面板

在多站点网络中,只有超级管理员可以安装主题并通过网络启用它们。单个网站的管理员只能查看和激活Super Admin已经安装的主题。

例如,我已经在网络上安装了免费的Astra主题,但尚未为网络启用它。因此,网络中各个子站点的管理员无法在“主题”面板下看到它。

网络子站点的管理员无法安装新主题

网络子站点的管理员无法安装新主题

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

超级管理员可以为子站点管理员启用插件管理

超级管理员可以使管理员能够管理插件

Super Admin插件屏幕中的网络激活插件

超级管理员还可以“网络激活”插件

A Super Admin can also Network Activate plugins to ensure that they’re forced across all sites on the network. Site Administrators cannot deactivate network activated plugins. This setting is ideal to enforce essential plugins throughout the network.

The Network Admin Screen

The Network Admin dashboard serves as a central hub for the Super Admin to manage the network capabilities of WordPress Multisite. It’s only accessible to users with the Super Admin role after creating a network.

网络管理员屏幕是超级管理员角色所特有的,并包含其他选项

The Network Admin dashboard includes unique options to manage the network

1. Dashboard

The Network Admin Dashboard is the central hub for detailed information about your network sites. It gives you access to all your network settings.

2. Sites
WordPress多站点网络中的“站点”面板

The ‘Sites’ panel in a Network Admin dashboard

您可以使用“站点面板”来管理属于多站点网络的各个站点。根据您配置WordPress Multisite网络的方式,此处列出的站点将是子目录或子域。

在这里,您可以将新站点添加到网络中,也可以从网络中删除现有站点。

您还可以从此处访问有关站点,用户,主题和整体网络设置的信息。您创建的第一个站点是网络中的主站点。网络从第一个站点的选项继承所有设置。

将新站点添加到WordPress多站点网络

单击添加新站点链接或按钮将带您到上面的屏幕,您可以在其中将新站点添加到多站点网络。如果您没有其他人要成为新站点的管理员,则也可以将自己指定为管理员。

3.用户
WordPress多站点网络管理仪表板中的“用户”面板

Network Admin仪表板中的“用户”面板

Network Admin仪表板中的“用户”屏幕使您可以管理用户并将“新用户”添加到多站点网络。只有超级管理员可以将用户添加到网络,但是超级管理员可以修改网络设置,以使站点管理员可以将新用户仅添加到他们自己的站点。

4.主题
Network Admin仪表板中的“主题”面板

Network Admin仪表板中的“主题”面板

主题屏幕使您可以管理站点管理员可以访问的主题。它不允许您激活或停用任何站点正在使用的主题,而只能设置任何站点可以使用的主题。

如果您禁用了网络中任何地方正在使用的主题,即使您禁用了该主题,该主题也将在该站点上保持活动状态。但是,如果网站使用其他主题,则禁用的主题将不会出现在网站的“主题”面板中。

您可以参考Kinsta的WordPress Multisite文章,以了解如何使用网络上的主题和插件。您还可以使用主题编辑器在仪表板内部编辑主题文件。

5.插件
Network Admin仪表板中的“插件”面板

Network Admin仪表板中的“插件”面板

插件屏幕允许用户在网络中添加或删除插件。添加后,您可以从网站的仪表板激活插件。您也可以从此处网络激活插件,以强制插件在网络中的所有站点上使用。

默认情况下,站点管理员无法访问其仪表板中的“插件”菜单。超级管理员可以通过修改网络设置为他们启用此功能。

为所有子站点管理员启用插件管理

为所有子站点管理员启用插件管理

Note: Not all WordPress plugins support Multisite networks. You need to read the plugin’s documentation to confirm whether they’ll work in Multisite setups.

6. Settings
网络管理控制台中的“网络设置”面板

The ‘Network Settings’ panel in Network Admin dashboard

You can set and change the settings for the entire network on the Network Settings Screen. The network’s default settings are based on the first site you created while setting up the network. Some network settings that you can change here are:

  • Operational Settings
  • Registration Settings
  • New Site Settings
  • Upload Settings
  • Language Settings
  • Menu Settings

Here, you can also access the Network Setup information you used when you created the network. You can refer to the Network Admin Settings Screen in WordPress Codex to get a detailed overview of all the setting options available.

7. Updates
Network Admin仪表板中的“更新”面板

The ‘Updates’ panel in Network Admin dashboard

You can control the update process for both the network and individual sites from the Updates Screen. The Updates panel will show you any updates available for WordPress Core, themes, and plugins. Once you’ve installed the latest version of WordPress, you can apply it to all the sites on the network via Upgrade Network screen.

网络管理控制台中的“升级网络”面板

The ‘Upgrade Network’ panel in Network Admin dashboard

Note: In a WordPress single-site installation, the Administrator is essentially a Super Admin as they’ve access to all the admin capabilities.

You can customize user roles and also create your own custom roles by using WordPress’ predefined capabilities.

Advantages of User Roles and Capabilities

The system of roles and capabilities is the backbone of user management WordPress. Here are some of its many benefits:

We grew our traffic 1,187% with WordPress.
We’ll show you how.
Join 20,000+ others who get our weekly newsletter with insider WordPress tips!

Subscribe Now

Success! Thanks for subscribing

You will receive the next issue of the Kinsta Newsletter within a week.

Subscribe to the Kinsta newsletter

Subscribe

I agree to the Terms and Conditions and Privacy Policy

  • User roles help you manage all the users on your site more efficiently. Even if you have dozens of users on your site working from distinct parts of the world, you can supervise them easily by granting the right roles to each one of them.
  • By restricting users to specific capabilities, it helps you to keep your site more secure. For example, authors cannot delete others’ posts, editors cannot change themes or install plugins, and subscribers can only access their own profiles.
  • WordPress plugins can check whether a user has certain capabilities, and based on that, perform a certain action. The current_user_can() WordPress function helps to perform this check. For instance, a security plugin can show its options panel only to the admin but still display security warnings to all users.
  • You can edit user roles to delegate some of your role responsibilities to other users to free up your time. Say your site is attracting a lot of comments. In such cases, you can allow a trusted author to take up moderating comments. You’ll still keep the ultimate power as an admin, but you can share some of your responsibilities depending on the need.
  • You can use capability checks to show private posts and pages that only certain user roles can view. This forms the basis of membership sites.
  • You can show or hide frontend elements on your site (e.g. menu items, widgets) depending on the user role.
  • You can create custom post types with custom capabilities and grant or deny those capabilities for each user role. Similarly, you can also define custom capabilities to allow only certain roles to have access to your plugin or theme settings.

如何有效管理WordPress用户角色

了解所有用户角色和功能是必不可少的,但是您还需要了解如何在站点上有效地管理它们。虽然没有两个WordPress站点完全相同,但是您可以遵循一些基本规则来充分利用WordPress的用户角色和功能。

给每个用户最小的访问权限

只为您站点上的每个用户分配他们所需的访问级别。总是授予更少的权限总是好于少。确保WordPress用户角色的安全对于确保您的网站及其内容的安全至关重要。

仔细分配用户角色给每个用户

仔细分配用户角色给每个用户

限制管理员和编辑者的数量

通常,每个站点应该只有一个管理员,并且只能对站点进行核心更改。WordPress建议您遵守“最少特权原则”,这建议您仅应为用户提供执行其所需工作所必需的特权。

例如,最好使用编辑者级别的用户来管理网站上的内容,而不要使用管理员。如果您的站点上有多个编辑器,请确保您可以信任他们的强大功能。

将作者角色分配给您可以信任的内容创建者,因为他们可以发布和删除自己的帖子。贡献者角色更适合新的内容创建者和来宾帖子。

根据需要自定义用户角色

默认的WordPress用户角色很有用,但它们可能并不适合每个用例。例如,为您的作者提供审阅评论的功能。

幸运的是,WordPress使我们能够根据我们的独特需求自定义用户角色或创建新角色。您可以通过代码或借助WordPress用户角色插件手动进行此操作。我们将在本文中介绍这两种方法。

在WordPress多站点网络上管理用户

WordPress Multisite包括用于用户管理的独特设置。其中有些很容易掌握,而有些则不容易。

让我们深入探讨它们。

多站点网络注册设置

开箱即用,只有超级管理员才能在网络上创建新用户和站点。但是,它们可以允许用户在网络上将帐户注册为子站点的订户。

To enable this, go to Network Admin > Network Settings > Registration Settings > Allow new registrations, and enable the “User accounts may be registered” option.

允许用户在您的网络上注册帐户

Allow users to register an account on your network

Here, you can also allow logged-in users to create new sites on your network. You can tick this option if you want to restrict the ability to create sites only for users set up by you.

The last option lets users register an account as well as create a site on your network. Users who create a site on your network are given the role of Administrator for their subsite.

One User Account to Access the Entire Network

When you create a user account on your network, or when a user registers an account on any of your network’s sites, they can navigate to any site within the network after logging in. Imagine this as a social network like Facebook or Reddit where you can create one account and access all the groups or subreddits with the same user profile.

This is one of the major benefits of using WordPress Multisite. It allows your users to access all your sites by registering just one account.

Granting Extra Privileges to the Site Administrators

You can allow site Administrators to add users to their own sites by ticking the Add New Users option.

允许站点管理员将新用户添加到其站点

Allowing site administrators to add new users to their subsite

As mentioned before, you can grant site administrators access to managing plugins on their subsites by going to Network Settings > Menu Settings and checking the Enable administration menus > Plugins option.

Subsite Level User Registration

WordPress Multisite installations only allow user registrations for the entire network by default. There’s no option to enable user registrations for only one subsite. You can change this behavior by using the Network Subsite User Registration plugin.

网络子站点用户注册WordPress插件

The ‘Network Subsite User Registration’ plugin

This plugin allows site administrators to enable local user registrations with access restricted only to their site. New users will take on the Subscriber role by default, but you can change this by modifying the plugin settings.

允许任何人在您的子站点上注册帐户

Enable anyone to register an account only on your subsites

Assigning the Same User to Multiple Subsites

You can assign the same user to multiple sites in your network with unique roles. When the user logs in to the dashboard of their sites, they can access the dashboard for all their sites through the My Sites screen.

您可以将一个用户分配到WordPress多站点网络中的多个站点

You can assign one user to multiple sites in a WordPress Multisite network

Granting Other Users Super Admin Privileges

A Super Admin can also share their privileges with other users. You should enable this option with caution and only assign it to users who you can trust.

向其他用户授予网络的超级管理员特权

Granting other users the Super Admin privileges for the network

Understanding all the user management settings in WordPress Multisite will help you manage your network better. To find other helpful plugins for WordPress Multisite, you can explore them in the WordPress repo or Kinsta’s recommended WordPress Multisite plugins article.

How to Customize Existing WordPress User Roles

You can add capabilities to your existing user roles to increase their level of access. For instance, you can give Editors the power to manage plugins. Or perhaps you want Contributors to moderate comments on their own posts. Let’s learn how to do that.

Note: If dabbling with code isn’t your thing, you can skip the manual method and go directly to the user roles and capabilities plugins section below. Or simply hire a WordPress developer.

How to Add Capabilities to a User Role

You can add a capability to a user role or any specific user by using the add_cap() WordPress function. I’ll use a custom plugin called Customize User Role to show how to use this function to give the Editor role the power to manage plugins.

<?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 recommends running this function on plugin or theme activation as the settings it adds are stored to the database in wp_options table under wp_user_roles field. It’s inefficient to run this function every time you load any page as the database tables will keep getting overwritten on every page load.

Since I’m using a plugin, I’ll use the register_activation_hook() function to hook into the action that’s run when you activate a plugin. There are many ways to do this, but I’m using a robust class-based implementation to ensure that there are no conflicts.

//此代码仅在插件激活期间运行,而不再
运行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的单独文件中定义了该类,并将其放置在我的插件根文件夹中的名为include的子文件夹内,但是您可以根据需要命名。

<?php

class Sal_Customize_User_Role {
public static function activate(){
//从WP_Role获取编辑者角色的对象class
$ editor = get_role(’editor’);

//要添加到编辑者角色中的与插件相关的功能的列表
$ caps = array(
‘install_plugins’,
‘activate_plugins’,
‘edit_plugins’,
                  ‘delete_plugins’
);

//通过遍历
foreach($ caps as $ cap){
$ editor-> add_cap($ cap);
}
    }
}

这是上述代码的详细说明:

  • 首先定义您在主插件文件中引用的类及其功能。
  • get_role(’editor’)函数从WP_Role核心类检索编辑者角色对象,并将其分配给$ editor变量。
  • 管理插件需要四个功能:install_plugins,activate_plugins,edit_plugins和delete_plugins。但是add_cap()函数仅接受一个参数。因此,我们需要将所有功能包括在数组中。定义$ caps数组以容纳所有这些功能。如果仅添加一项功能,则无需定义数组。
  • add_cap($ cap)函数通过使用foreach()PHP函数循环遍历所有$ caps数组中定义的所有功能。

保存所有插件文件,然后从管理员仪表板激活插件。现在,我们登录到编辑器仪表板以查看更改。

编辑者在向其角色添加功能后即可管理插件

编辑者现在可以从其仪表板管理插件

After adding the plugin-related capabilities to their user role, Editors can see the Plugins menu listed in their admin menu.

编辑器信息中心中的“添加插件”屏幕

The ‘Add Plugins’ screen in Editor dashboard

You can check the capabilities assigned to each user role by seeing the wp_user_roles key value stored in the wp_options table of your WordPress site’s database.

Here are the capabilities I found assigned to the Editor role:

‘editor’=>
  array(
    ‘name’=>’Editor’,
    ‘capabilities’=>
    array(
      ‘moderate_comments’=> true,
      ‘manage_categories’=> true,
      // […为了简洁起见,截断了行。 。]
      ‘install_plugins’=> true,
      ‘activate_plugins’=> true,
      ‘edit_plugins’=> true,
    ),
  ),

请注意最后三行,这使编辑者可以管理插件。

如果要删除这些功能,则可以挂接到register_deactivation_hook()函数,然后使用remove_cap()函数删除插件停用功能,就像我们在插件激活时添加了这些功能一样。

既然您已经学习了如何向用户角色添加功能,那么该学习如何从用户角色中删除功能了。

注意:您还可以连接到after_switch_theme操作,以在激活主题(和/或子主题)时触发此代码。在这里,您必须将代码包含在主题或子主题的(推荐)functions.php文件中。

如何从用户角色中删除功能

有时,您可能想从用户角色中删除功能。您可以运行remove_cap()函数从角色或特定用户中删除功能。例如,从Author用户角色中删除delete_published_posts功能是一个好主意。

让我们完成这个!

我将创建一个名为Customize Author Role的新自定义插件以开始使用。就像以前一样,通过挂接到register_activation_hook()函数,我将只运行一次此代码。

<?php

/ *
插件名称:自定义作者角色
版本:1.0
说明:演示如何自定义WordPress作者角色。
作者:Salman Ravoof
作者URI:https ://www.salmanravoof.com/
许可证:GPLv2或更高版本
许可证URI:https ://www.gnu.org/licenses/gpl-2.0.html
文本域:customize-author-role
* /

//此代码仅在插件激活期间运行,并且不再
运行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’);

接下来,我将在class-sal-customize-author-role.php文件中定义Sal_Customize_Author_Role类。我已经在上面的主插件文件中引用了这两个资源。

<?php
class Sal_Customize_Author_Role {
public static function activate(){
//从WP_Role获取编辑者角色的对象class
$ author = get_role(’author’);

//删除从作者角色删除已发布帖子的功能
$ author-> remove_cap(’delete_published_posts’);
    }
}

remove_cap(’delete_published_posts’)函数将删除从“作者”角色中删除已发布帖子的功能。

默认情况下,允许作者删除已发布的帖子

默认情况下,允许作者删除已发布的帖子

是时候保存所有插件文件,然后激活插件了。现在,登录到“作者”仪表板并查看更改。

作者不能再删除其发布的帖子

作者不能再删除其发布的帖子

垃圾箱选项不再适用于作者发布的帖子。但是,他们仍然可以删除其具有草稿或待处理状态的未发布帖子。

作者仍然可以删除其未发布的帖子

作者仍然可以删除其未发布的帖子

如果甚至要禁用此功能,则还需要从“作者”角色中删除delete_posts功能。

为特定用户添加或删除功能

如果要向特定用户(而不是整个用户角色)添加功能,则可以使用WP_User :: add_cap()类函数添加功能。

//通过ID获得用户对象
$ user = new WP_User($ user_id);

//将功能添加到特定用户
$ user-> add_cap($ cap);

您可以使用get_user_by()函数通过使用其电子邮件,登录用户名或slug检索任何用户的ID。

同样,您可以使用WP_User :: remove_cap()类函数从特定用户中删除功能。

//通过ID获得用户对象
$ user = new WP_User($ user_id);

//将功能添加到特定用户
$ user-> add_cap($ cap);

和以前一样,仅在插件或主题激活时运行这些功能,以使代码保持最佳状态。

注意:add_cap()和remove_cap()都是WP_Role类的对象方法。您不能在代码中直接调用它们。您需要使用get_role()函数或$ wp_roles全局变量来访问它们。

复制用户角色

您可以通过克隆现有用户角色的所有功能来创建新用户角色。这是您可以执行的操作:

add_role(’clone’,’Clone’,get_role(’administrator’)-> capabilities);

在上面的示例中,我正在创建一个名为Clone的新角色,该角色具有与管理员相同的功能。在主题或插件激活上运行此代码将确保仅将克隆角色添加一次。

如何在WordPress中创建自定义用户角色

编辑默认用户角色的功能是自定义它们的快速方法。但是,如果您要编辑角色的许多功能,则最好完全创建一个新的自定义用户角色。这样,您可以为站点上的每个角色设置所需的确切功能。

要创建自定义用户角色,您需要使用add_role()函数。它接受三个参数。

add_role($ role,$ display_name,$ capabilities);

前两个参数应该是字符串(并且是必需的),函数才能运行。它们分别定义新的自定义角色的名称和显示名称。最后一个参数是可选的,应该是一个数组。您可以使用它为新角色分配所有功能。

让我们创建一个名为“社区管理器”的自定义用户角色,该角色可以主持评论并编辑整个站点中的帖子。方法如下:

<?php

/ *
插件名称:添加社区管理员角色
版本:1.0
说明:添加名为“社区管理员”的自定义用户角色
作者:Salman Ravoof
作者URI:https
: //www.salmanravoof.com/许可证:GPLv2或更高版本
许可证URI:https ://www.gnu.org/licenses/gpl-2.0.html
文本域:add-community-manager-role
* /

//此代码仅在插件激活时运行一次,而不会再
运行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()函数在插件激活时仅运行一次,而不再运行。保存文件并在管理员仪表板中激活插件。现在,您应该能够将社区管理员角色分配给新用户和现有用户。

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

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

将自定义用户角色分配给现有用户

将自定义用户角色分配给现有用户

您还可以通过检查数据库内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,
    ),
  ),
)  

最后列出的是我们刚刚添加的所有功能。您可以通过添加或删除功能来进一步编辑此角色。

测试新用户角色

在将新用户角色分配给任何实际用户之前,必须测试它是否按预期工作。您可以按照以下清单进行测试:

  1. 创建一个测试用户帐户,并为其分配新的用户角色。
  2. 以测试用户身份登录,并确保其所有功能均按预期工作。例如,如果您授予它编辑已发布帖子的功能,则转到任何帖子并检查是否可以对其进行编辑。您为角色分配的功能越多,测试所有功能的时间就越多。
  3. 接下来,尝试直接在浏览器中访问任何更高级别的管理链接。我通过直接访问WordPress设置屏幕进行了测试,并且正如预期的那样,WordPress不允许我
    进入。WordPress显示的“拒绝访问”消息
  4. 完成测试后,删除测试用户。

差不多了!现在,您可以将新角色分配给站点的用户。

您可以使用“用户切换”或“查看管理员身份”插件,只需单击一下即可在站点上的不同用户帐户之间交换。它们非常适合测试多个用户的功能。我将在本文后面详细介绍这两个方面。

在WordPress多站点中创建自定义用户角色

WordPress Multisite处理用户角色的方式与WordPress单站点安装有所不同。尽管您可以像以前一样使用add_role()函数创建自定义用户角色,但新角色将仅在网络的主站点(您创建的第一个站点)上起作用。它不会传播到网络上的所有子站点。

为了确保回调函数中的代码在网络中的每个站点上运行,您需要通过循环遍历网络中的所有站点来强制执行它。对于此示例,我将创建一个名为“插件管理器”的新用户角色,它将具有管理插件的所有功能。

<?php

/ *
插件名称:添加插件管理器角色
版本:1.0
说明:在WordPress多
站点安装中添加名为插件管理器的自定义用户角色作者:Salman Ravoof
作者URI:https
: //www.salmanravoof.com/许可证:GPLv2或更高版本的
许可证URI:https://www.gnu.org/licenses/gpl-2.0.html
文本域:add-plugin-manager-role
* /

/ *
使代码
在插件被网络激活时在网络上的每个站点上运行
* /
函数add_plugin_manager_role($ network_wide){

if(is_multisite()&& $ network_wide){
//为多站点网络
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(

‘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条件语句检查插件在Multisite安装中是否为“网络激活”。如果为true,它将运行If语句中包含的代码。如果为假,则运行else语句中的代码。
  • get_sites([[fields’=>’ids’])函数返回网络中所有站点ID的列表。使用foreach()PHP函数,它们循环遍历所有代码,以分别在每个网络站点上运行代码。
  • switch_to_blog($ blog_id)函数指导接下来的几行代码针对具有$ blog_id ID的子站点执行。由于WordPress最初主要是作为博客平台开始的,因此您可以在此处用“站点”替换“博客”一词,以更好地了解其用法。
  • 接下来,使用add_role()函数创建具有其功能的自定义用户角色。这遵循与本文前面所述相同的代码约定。
  • 在终止循环之前,请定义restore_current_blog()函数以确保您将切换后的站点状态恢复到其原始状态。
  • else语句中的代码是回退,以确保与单站点安装兼容。

保存插件文件,然后转到网络管理>插件屏幕,以“网络激活”您的自定义插件。之后,转到您站点的任何“编辑站点”屏幕下的“用户”选项卡,以检查新的插件管理器角色是否可用。

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

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

将自定义用户角色分配给子站点的新用户

将自定义用户角色分配给子站点的新用户

我还确认此新用户角色在网络中的其他站点上可用。它完美地工作。

将新用户角色分配给子站点上的现有用户

将新用户角色分配给子站点上的现有用户

您还可以通过浏览站点的数据库来验证新的自定义角色及其功能。但是,与单站点安装不同,WordPress Multisite会为每个子站点创建一个单独的wp_options表。

用户角色存储在WordPress多站点数据库中的位置

用户角色存储在WordPress多站点数据库中的位置

您可以找到子站点特定的表,它们分别列为wp_2_options,wp_3_options和wp_4_options。同样,角色和功能存储在名为wp_2_user_roles,wp_3_user_roles和wp_4_user_roles的相应字段中。

您已经定义了如何在网络中的所有站点上创建自定义用户角色,但是将来将要创建的站点又如何呢?为确保将此自定义用户角色添加到网络中创建的每个新站点,可以将以下代码附加到插件:

//创建新站点时再次运行代码
function add_custom_user_role_new_site($ blog_id){
//检查插件是否对网络处于活动状态,
如果(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’);

  • 每当有人在多站点网络中创建新站点时,就会触发wpmu_new_blog操作。您可以使用回调函数加入该操作,以添加自定义用户角色。
  • is_plugin_active_for_network()函数检查插件在整个网络中是否处于活动状态,并返回布尔值。它接受插件文件的路径作为参数。
  • 其余代码遵循与以前相同的逻辑。您可以使用$ blog_id参数切换到新站点,使用add_role()函数创建自定义角色,然后使用restore_current_blog()函数切换回当前站点。

如何从WordPress删除用户角色

您可以使用remove_role()函数从WordPress删除任何用户角色。它仅接受一个参数,即角色名称。例如,您可以通过在站点中的任何地方运行以下代码来删除“贡献者”角色:

remove_role(’contributor’);

与add_role()函数将在不通过插件或主题激活运行时继续更新数据库不同,remove_role()函数仅在角色存在时执行。由于作为参数传递的任何角色都是在首次运行时被删除的,因此您不必担心在何处运行此函数。

但是,为避免将来发生冲突,请从数据库中删除角色后删除代码。

在WordPress中创建自定义功能

在大多数情况下,使用WordPress的内置功能编辑现有用户角色并创建新的自定义角色就足够了,但是您可能想为自定义代码引入的功能(使用插件或主题)定义新功能。

然后,您可以使用这些自定义功能来定义新角色或将其添加到现有角色中。

例如,WooCommerce增加了额外的功能和角色以及其广泛的电子商务功能。它增加了一些功能:

  • 允许管理WooCommerce设置
  • 创建和编辑产品
  • 查看WooCommerce报告

使用这些功能,它添加了两个新的用户角色:客户和商店经理。

WooCommerce添加了自己的用户角色

WooCommerce添加了自己的用户角色

“客户”角色与“订阅者”角色几乎相似,除了具有“客户”角色的用户可以编辑其帐户信息并查看当前/过去的订单。商店经理角色包括编辑器的所有功能,并且还被授予所有WooCommerce功能。

引入自定义功能和/或角色的其他插件包括事件日历,Visual Portfolio,WPML和WP ERP。

如果深入研究所有这些插件的文档,您会注意到它们几乎将其所有自定义功能与它们定义的自定义帖子类型相关联。在WooCommerce的情况下,它是“产品和订单”自定义帖子类型,在其他情况下,分别是“事件”,“产品组合”,“翻译”和“客户”。

让我们学习如何创建绑定到自定义帖子类型的自定义功能。

首先,设置一个插件并注册所需的自定义帖子类型。在我的示例中,我正在注册一个名为Stories的新自定义帖子类型。

<?php

/ *
插件名称:自定义帖子类型和功能
版本:1.0
说明:注册自定义帖子类型并定义与其绑定的自定义功能。
作者:Salman Ravoof
作者URI:https ://www.salmanravoof.com/
许可证:GPLv2或更高版本
许可证URI:https ://www.gnu.org/licenses/gpl-2.0.html
文本域:custom-post-type能力
* /

//注册自定义帖子类型,在这种情况下称为“故事” //
函数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’,’在工具栏上添加新功能,’custom-post-type-capabilities’),
        ‘add_new’=> __(’Add New’,’custom-post-type-capabilities’ ),
        “add_new_item’=> __(’添加新故事’,’custom-post-type-capabilities’),
        ‘new_item’=> __(’New Story’,’custom-post-type-capabilities’),
        ‘edit_item’=> __(’Edit Story’,’custom-post-type-capabilities’),
        ‘view_item’= > __(’查看故事’,’自定义帖子类型能力’),
        ‘all_items’=> __(’所有故事’,’自定义帖子类型能力’),
        ‘search_items’=> __(’搜索故事”,“自定义帖子类型能力”),
        “ parent_item_colon” => __(“父母故事:”,“自定义帖子类型能力”),
        “未找到” => __(“未找到故事” 。’,’custom-post-type-capabilities’),
        ‘not_found_in_trash’=> __(’在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(’删除封面图像’,’custom-post-type-capabilities’),
        ‘use_featured_image’=> _x(’用作封面图像’,’custom-post-type-capabilities’),
        ‘存档’ => _x(’故事档案’,’自定义帖子类型能力’),
        ‘insert_into_item’=> _x(’插入故事’,’自定义帖子类型能力’),
        ‘uploaded_to_this_item’=> _x (’上传到此故事”,“ custom-post-type-capabilities”),
        “ filter_items_list” => _x(“过滤器故事列表”,“ custom-post-type-capabilities”),
        ‘items_list_navigation’=> _x(’故事列表导航’,’自定义帖子类型能力’),
        ‘items_list’=> _x(’故事列表’,’自定义帖子类型能力’),
    );

    $ 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’);

以下是上述脚本的细分:

  • 使用register_post_type()函数注册您的自定义帖子类型。您可以连接到init操作以运行此功能。
  • register_post_type()函数接受两个参数。第一个是自定义帖子类型的名称,第二个是包含用于注册帖子类型的所有参数的数组。
  • $ args变量保存您将传递给register_post_type()函数的所有参数。它的参数之一(’labels’)本身就是一个单独定义为$ label变量的数组。
  • 注意’capability_type’=>’post’参数。这是WordPress用于为自定义帖子类型构建读取,编辑和删除功能的默认功能类型。
  • 要创建自定义功能,需要用自定义功能的首选名称替换capability_type参数的值。它接受字符串或数组作为参数。如果自定义功能的复数不遵循标准的后缀语法(例如,书/书vs故事/故事),则该数组很有用。
  • 您还可以使用功能自变量来命名新功能,其名称不同于WordPress自动执行的功能。
  • 您必须将自定义功能映射到WordPress的原始功能。将map_meta_cap参数设置为true,以便WordPress知道它需要按照建议映射自定义功能。

接下来,您需要向要授予对Stories自定义帖子类型访问权限的角色中添加自定义功能。对于此示例,我向管理员和编辑者角色授予了此功能。

是否需要为您的客户站点提供快速,安全且对开发人员友好的托管?Kinsta在构建时就考虑了WordPress开发人员,并提供了许多工具和功能强大的仪表板。查看我们的计划

//将自定义功能添加到所需的用户角色
$ 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’);
}

保存文件,然后激活插件。现在,您应该在管理员或编辑器仪表板中看到“故事”链接和面板。

WordPress仪表板中的“故事”自定义帖子类型面板

WordPress仪表板中的“故事”自定义帖子类型面板

如果您检查站点中可用的功能,您还将看到我们添加的所有与故事相关的功能。在这里,我使用“查看管理员身份”插件来检查功能。

与“故事”自定义帖子类型相关的自定义功能

与“故事”自定义帖子类型相关的自定义功能

您可以通过Gist下载此插件的详细版本。它使用一组自定义功能注册一个名为Projects的自定义帖子类型。然后将它们分配给两个名为“学生”和“老师”的自定义角色,以帮助您构建教育网站。

有一种方法可以定义自定义功能,这些功能可以根据用户的角色授予用户访问您的插件设置的权限。讨论如何执行此操作不在本文的讨论范围内,但是您可以在StackExchange上参考此信息性线程以获取更多信息。

最好的WordPress用户角色和功能插件

知道如何使用代码来调整用户角色和功能非常棒,但这并不适合每个人。如果不确定自己在做什么,那么很多事情都会出错。但是,即使您使用的是插件,了解角色和功能在WordPress中的工作方式也会大有帮助。

让我们看一些最流行的WordPress插件,这些插件可轻松自定义WordPress用户角色和功能。我还将列出一些有用的插件,以快速测试角色和功能。

用户角色编辑器(由Vladimir Garagulia撰写)

“用户角色编辑器” WordPress插件

“用户角色编辑器” WordPress插件

用户角色编辑器是WordPress存储库中最受欢迎的角色和功能管理插件。它带有一个简单的界面,任何人都可以通过单击来编辑用户角色和功能。

安装并激活插件后,您可以在管理控制台中转到“用户”>“用户角色编辑器”以访问其主界面。

用户角色编辑器仪表板

用户角色编辑器仪表板

这是上面标记的仪表板部分的详细概述:

  1. 从下拉菜单中选择要自定义的角色。它不仅列出默认角色,而且列出数据库中存在的所有角色。您还可以选择以易于理解的形式而不是其常数来显示功能。另一个选项使您可以查看最新版本的WordPress中不再支持的不推荐使用的功能。
  2. 用户角色编辑器将所有功能分组到左侧的不同类别中。核心类别包括所有内置功能。由于我已经在此站点上安装了WooCommerce,因此您也可以找到其自定义帖子类型的功能。甚至用户角色编辑器插件也添加了自己的一组自定义功能。
  3. 在右侧,您将找到列出的所有功能。选择“全部”组后,可以看到所有功能。但是,您可以通过单击左侧的组将其过滤。您还可以勾选顶部的“仅授予”选项,以隐藏任何用户角色未使用的所有功能。
  4. 您还可以从此处添加角色,重命名角色,添加功能和删除角色。在最底端,您会找到一个附加选项,以隐藏用户角色的管理栏。

以人类可读的形式显示功能

以人类可读的形式显示功能

要自定义任何用户角色,只需勾选或取消选中所需的功能,然后单击“更新”按钮以保存您的更改。就这么简单。

在用户角色编辑器中添加新角色

在用户角色编辑器中添加新角色

单击添加角色按钮以创建一个新角色。您可以使用“制作副本下拉”选项从头开始创建角色或复制现有角色。

轻松重命名“角色显示名称”

轻松重命名“角色显示名称”

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

在用户角色编辑器中添加新功能

在用户角色编辑器中添加新功能

您可以通过单击添加功能按钮来添加新功能。

使用用户角色编辑器插件轻松删除未分配的WordPress用户角色

轻松删除未分配的用户角色

单击删除角色按钮,可以删除尚未分配给任何用户的自定义角色。

注意:“用户角色编辑器”不允许您删除WordPress的内置角色或功能。如果将任何自定义角色分配给任何用户,也不允许您删除任何自定义角色;如果将其分配给任何非管理员角色,则不允许删除任何自定义功能。

用户角色编辑器中的“删除功能”按钮

您应注意,仅当任何功能未分配给非管理员时,“删除功能”按钮才会出现。否则隐藏。

您还可以将多个角色分配给同一用户,或者根本不给他们任何角色。

在用户角色编辑器中剥离任何角色的用户

剥离任何角色的用户

要为用户分配多个角色,您需要转到仪表板中的“用户”面板,然后将鼠标悬停在用户名上之后,单击下面将显示的“功能”链接。

将多个角色分配给同一用户

将多个角色分配给同一用户

如果您在管理控制台中转到“设置”>“用户角色编辑器”,则还会找到“用户角色编辑器”插件的其他选项。

用户角色编辑器的“常规”选项标签

用户角色编辑器的“常规”选项标签

在这里,您可以更改插件的默认设置,安装其他模块,更改分配给新用户的默认角色,甚至将用户角色和功能重置为默认状态。

其他模块可帮助您扩展用户角色编辑器的功能

其他模块可帮助您扩展用户角色编辑器的功能

为新用户设置默认角色

为新用户设置默认角色

将所有用户角色和功能重置为其默认状态

将所有用户角色和功能重置为其默认状态

尽管免费版的User Role Editor对于大多数用例而言已绰绰有余,但其高级版却包含更多功能,包括支持在WordPress Multisite设置中管理角色和功能。

会员由MemberPress

MemberPress的“会员” WordPress插件

MemberPress的“会员” WordPress插件

成员是WordPress的以会员资格为重点的用户角色和功能插件。它最初是作为一个简单的用户角色和功能管理插件启动的,此后一直转向成员资格功能。

会员中的“角色”面板

会员中的“角色”面板

安装并激活插件后,您可以转到仪表板中的成员>角色来查看站点上所有可用的角色。

成员允许您删除所有角色,包括内置WordPress角色(管理员和默认角色除外)。您还可以编辑和克隆角色,以及列出分配给特定角色的所有用户。

成员中的“编辑角色”面板

成员中的“编辑角色”面板

在“编辑角色”面板中,您可以通过选中和取消选中相关复选框来授予或明确拒绝特定角色的功能。您还可以从此处为该角色添加自定义功能。

成员中的“添加新角色”面板

成员中的“添加新角色”面板

单击“添加新角色”链接将带您到一个类似的屏幕,在该屏幕中,您可以通过为其指定显示名称,ID及其功能集来创建新角色。

成员中的“常规设置”面板

成员中的“常规设置”面板

就像使用用户角色编辑器一样,您可以使用成员为用户分配多个角色。您还可以设置内容权限以将内容限制为仅具有特定角色的用户。

您还可以在会员中轻松启用“私人站点”模式

您还可以在会员中启用“私人网站”模式

您可以将您的网站及其供稿设置为私有。另外,您可以通过执行身份验证来限制外部人员对WordPress REST API的访问。

会员插件的各种附加组件

会员插件的各种附加组件

成员通过其惊人的附加组件将自己与其他角色和功能插件区分开。它们可以帮助您向站点添加大量其他功能,例如用户隐私和个人数据管理(GDPR),添加与标签和类别相关的功能,建立角色层次结构等等。

成员与流行的WordPress插件集成

成员与流行的WordPress插件集成

您可以将Member与许多流行的WordPress插件无缝集成。例如,您可以使用它来创建和管理高级自定义字段(ACF)插件的自定义功能。它集成的其他一些插件是Easy Digital Downloads,GiveWP,Meta Box和WooCommerce。

会员的会员制附加组件(付款,订阅,电子邮件营销和高级内容保护)仅在其高级版本上可用。

WPFront用户角色编辑器

“ WPFront用户角色编辑器”插件

“ WPFront用户角色编辑器”插件

WPFront用户角色编辑器可帮助您创建,编辑或删除WordPress网站中的用户角色和功能。它的功能集就像前面讨论的插件一样,但是它有两个Salient功能。

将所有用户从一个角色迁移到另一个角色

将所有用户从一个角色迁移到另一个角色

安装并激活WPFront用户角色编辑器后,您可以转到管理控制台中的“用户”>“分配/迁移”屏幕,并将属于特定用户角色的所有用户迁移到另一个用户角色。您甚至可以为用户分配辅助角色。

如果您必须将站点上的许多用户从一个角色迁移到另一个角色,此功能将非常方便。

WPFront用户角色编辑器中的“登录重定向”设置屏幕

WPFront用户角色编辑器中的“登录重定向”设置屏幕

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

高级访问管理器

“高级访问管理器”插件

“高级访问管理器”插件

Advanced Access Manager(AAM)是一个功能强大的WordPress插件,可让您控制网站的几乎每个方面。它包含200多种不同的功能,是为了解角色和功能如何工作的高级WordPress用户设计的。

与上面列出的插件相比,AAM具有更多的功能。但是,由于这是一个以开发人员为中心的插件,因此对于初学者或中级用户而言,使用起来并不容易。

Advanced Access Manager中的主仪表板

Advanced Access Manager中的主仪表板

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

  1. 最上面的区域提到了当前正在考虑的“主题”。在这里,它是角色:管理员,但可以是特定用户,匿名访问者或所有人的默认设置。
  2. 主题下方的区域是主面板,您可以在其中进行所有设置来管理对主题的站点上各种内容的访问。
  3. 第三个区域是用户/角色管理器。使用其选项卡式图标,可以选择要管理的内容。是所有人的用户角色,特定用户,匿名访问者还是默认访问行为?
  4. 第四个区域使您可以管理AAM的设置,安装其高级附件并与支持人员联系。

Advanced Access Manager中的“设置”面板

Advanced Access Manager中的“设置”面板

AAM根据其行为和用途将其设置分为5组。

  • 服务设置列出了您可以启用或禁用的所有AAM模块。通过有选择地加载模块,可以使站点保持最佳状态。
  • 通过“核心设置”区域,您可以启用或禁用某些AAM和WordPress的核心功能。
  • 内容设置与网站的内容(例如,帖子,页面,自定义帖子类型)相关。
  • “安全设置”部分包括AAM的安全登录功能的设置。到目前为止,只有两种设置可用:“蛮力锁定”和“每用户一个会话”。
  • ConfigPress是一项有趣的功能,可让您使用基于INI的代码更改AAM插件的配置。

Advanced Access Manager中的“附加组件”面板

Advanced Access Manager中的“附加组件”面板

AAM是一个面向开发人员的插件,不仅限于用户角色和功能。它使您可以精确控制每个角色在您的网站上可以做什么或不能做什么。

为您的网站安装“访问策略”以确保其安全

为您的网站安装“访问策略”以确保其安全

您可以使用AAM为您的网站设置访问和安全策略。它定义了哪个角色以及在什么条件下可以访问您网站上的各种资源。如果要立即上手,可以从AAM访问策略中心安装即装即用的访问策略。

“ AAM安全登录”小部件以添加前端登录表单

“ AAM安全登录”小部件以添加前端登录表单

AAM允许您创建临时用户帐户和角色。这是与外部资源共享帐户的安全方法。临时用户帐户将在您设置的日期和时间之后过期。对于临时角色,将在指定时间段后删除该角色的用户。

涵盖AAM的所有功能超出了本文的范围。您可以参考Advanced Access Manager的文档以了解有关其所有广泛功能的更多信息。

提示:User Access Manager是Advanced Access Manager的不错替代品,尽管它具有较少的功能并且不经常更新。

用户切换

“用户切换” WordPress插件

“用户切换” WordPress插件

用户切换使您只需单击一下即可在不同的WordPress用户帐户之间进行交换。如果您要测试许多用户角色和功能,则使用此插件将帮助您节省大量时间。用户切换使用WordPress的内置cookie身份验证系统来记住您从中切换的帐户,以便您可以立即切换回它们。

安装并激活插件后,请访问信息中心中的“用户”菜单。您会看到每个用户的“切换到”链接。单击此按钮将切换到所需的用户。

点击“切换到”链接以切换到所需的用户

点击“切换到”链接以切换到所需的用户

您可以通过单击仪表板或用户配置文件屏幕中的切换回链接来切换回原始帐户。

您可以轻松切换回原始帐户

您可以轻松切换回原始帐户

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

只需单击一下即可打开和关闭您的帐户

只需单击一下即可打开和关闭您的帐户

作为安全措施,只有具有编辑用户能力的用户才能切换用户帐户。默认情况下,在WordPress单站点安装中,只有管理员具有此功能,而在多站点网络上,只有超级管理员具有此功能。

为了进一步简化用户切换,您可以安装管理栏用户切换扩展程序,以使“切换到用户”链接出现在管理栏中。

将“切换到用户”链接添加到管理栏

查看管理员为

“将管理员查看为” WordPress插件

“将管理员查看为” WordPress插件

View Admin As是一个高级用户切换插件,还包括角色和功能管理器。与使用“用户切换”插件不同,您无需安装扩展程序即可将用户切换菜单添加到管理栏中。默认情况下,“查看管理员身份”会将其所有主菜单项添加到管理栏中。

管理栏中的“查看为”菜单

即使没有用户使用这些角色,也可以在现有用户或角色之间进行切换(通过发挥其功能)。单击“网站访问者”链接会将您带到该网站的前端,您可以在其中以普通用户身份测试该网站的功能,而无需离开浏览器的选项卡。

查看管理员身份可让您临时更改自己的功能。由于它是非破坏性地完成的,因此您不会失去对主要功能的访问权限。

临时自定义当前用户的功能

临时自定义当前用户的功能

切换到用户帐户后,您可以直接从菜单中编辑其屏幕偏好设置。您还可以分别在前端和后端切换语言/区域设置。

您不限于一种视图类型,因为您可以组合各种选项并同时应用所有选项。

View Admin As带有两个可选模块,您可以根据需要启用这些模块。

查看管理员设置和可选模块

查看管理员设置和可选模块

第一个模块添加了“角色默认值”功能,该功能使您可以为所有角色设置默认屏幕设置。您可以将这些默认值应用于角色,单个用户或将来的新用户。

第二个模块启用Role Manager功能。您使用此模块对角色和功能所做的任何更改都是永久性的。与其他角色编辑器插件不同,该模块可让您通过自动将其迁移到另一个角色来删除分配给用户的角色。

您可以参考“查看管理员身份”文档以了解有关其广泛功能的更多信息。

MyKinsta用户角色

MyKinsta的多用户功能使您可以通过访问同一帐户下的Kinsta帐户或Kinsta托管的特定网站的独特方面来创建和管理多个用户。

您可以根据自己的需要选择各种角色来定制用户访问权限。

MyKinsta仪表板中的“用户管理”屏幕

MyKinsta仪表板中的“用户管理”屏幕

默认情况下,第一个用户获得“公司所有者”角色。它是最强大的角色,还包括公司管理员的所有功能。

一次只能有一位公司负责人,但是如果需要,您可以将角色转移给另一位公司管理员。这样,您还将您的Kinsta帐户的所有权转让给新的公司所有者。

只有公司所有者才能请求Kinsta删除该帐户。

您可以将其他用户角色分为2个主要角色类别:

  • 公司层面
  • 网站级别

公司级角色使用户可以访问Kinsta帐户的公司级详细信息,而站点级角色则使用户只能访问分配给他们的特定站点。邀请新用户或修改现有用户时,必须首先选择是否授予他们公司或网站访问权限。

邀请用户加入MyKinsta时选择角色类型

邀请用户加入MyKinsta时选择角色类型

公司层面的角色

公司管理员
MyKinsta中的“公司管理员”仪表板

MyKinsta中的“公司管理员”仪表板

公司管理员角色授予MyKinsta中最高级别的访问权限。它使用户可以完全控制Kinsta帐户及其所有站点。您应该只将此角色授予您信任的用户。

公司发展商
MyKinsta中的“公司开发人员”仪表板

MyKinsta中的“公司开发人员”仪表板

公司开发人员角色授予访问权限以管理所有站点,包括删除它们。由于MyKinsta用户角色是基于层次的,因此公司开发人员还可以管理站点级别的用户。但是,公司开发人员无法访问公司设置或帐单详细信息。

公司帐单
MyKinsta中的“公司帐单”仪表板

MyKinsta中的“公司帐单”仪表板

公司帐单角色仅授予访问权限以查看帐单明细和公司设置。他们无权访问任何网站。具有公司帐单角色的用户可以检查发票,启用自动发票电子邮件以及更改公司详细信息,例如地址和联系信息。

网站级别角色

网站管理员
MyKinsta中的“站点管理员”仪表板

MyKinsta中的“站点管理员”仪表板

站点管理员角色具有对特定站点的完全访问权限,包括对连接到该站点的所有环境的控制。但是,他们不能从公司帐户中删除网站。您可以将同一用户分配为多个站点的站点管理员。

网站开发人员
MyKinsta中的“站点开发人员”仪表板

MyKinsta中的“站点开发人员”仪表板

“站点开发者”角色只能访问其分配的站点的暂存环境。他们可以在暂存环境中执行任何操作,但不能删除暂存环境或将更改实时发布。与站点管理员一样,您可以为多个站点分配与站点开发者相同的用户。

网站开发人员可以访问分配的网站的暂存环境

网站开发人员可以访问分配的网站的暂存环境

您还可以在MyKinsta仪表板中看到站点开发人员无权访问分析,用户管理和活动日志功能。

MyKinsta用户角色与WordPress用户角色

MyKinsta和WordPress用户角色之间没有重叠。您可以相互独立使用它们。

作为Kinsta帐户的所有者,MyKinsta中的多用户角色功能可帮助您轻松管理一组经理,开发人员和会计师。它使Web开发机构可以通过一个功能强大的仪表板轻松管理所有客户的网站。

通过明确定义的用户角色和功能😌控制您的WordPress网站并简化您的工作流程单击以发布
摘要

WordPress角色和功能是用户访问管理背后的基本概念。它们可帮助您控制网站上所有用户可以执行的操作。许多插件和主题还使用它们为WordPress核心添加了非常有用的功能。

WordPress拥有自己的一组角色和功能,但是如果您需要更大的灵活性,则可以自定义它们或创建自己的角色和功能。您可以使用自己的代码或使用第三方插件来执行此操作。

了解角色和功能是什么,并学习如何管理它们,是掌握WordPress的关键一步。今天就开始吧!

如果您喜欢这篇文章,那么您会喜欢Kinsta的WordPress托管平台。加速您的网站并获得我们经验丰富的WordPress团队的24/7支持。我们基于Google Cloud的基础架构专注于自动扩展,性能和安全性。让我们向您展示Kinsta的与众不同!查看我们的计划