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

已发表: 2021-02-06

使用 CMS 构建网站时,始终欢迎灵活性。 值得庆幸的是,WordPress 拥有的不仅仅是它的份额,它的主题和插件使我们能够创建高度自定义的体验。

但它的灵活性不仅仅是我们可以安装的那些额外的东西。 它实际上已融入软件的核心。

创建自定义用户角色的能力就是一个光辉的例子。 今天,我们将看看它们是什么,为什么要使用它们,以及创建它们的几种不同技术。

对用户权限的细粒度控制

在每个 WordPress 安装中,您已经可以访问一系列默认用户角色。 它们允许我们指定用户在网站的后端(也称为仪表板)中可以做什么和不可以做什么。

这很有意义。 并非每个管理内容的人都需要拥有管理权限。 因此,我们可以根据需要为每个用户分配一个角色。 这是一项很好的安全措施,可以更好地防止意外事故甚至有人疯狂安装插件。

这也适用于前端。 如果您只想让登录用户看到特定内容,您可以将此功能构建到您的主题中或通过会员插件添加。

但是,虽然默认用户角色(管理员、编辑者、作者、贡献者和订阅者)很有用,但有时您需要额外的控制权。 这就是 WordPress 提供创建您自己的自定义角色的能力的原因。

何时使用自定义角色

自定义用户角色可以在多种情况下派上用场。 以下是您可能会遇到的一些更常见的问题:

您拥有管理不同内容类型的用户

默认情况下,WordPress 带有两种主要的面向公众的内容类型:帖子和页面。 但是通过使用自定义帖子类型很容易添加更多内容。 例如,您可以为新闻稿或员工等内容创建帖子类型。 另外,各种插件也可以安装自己的帖子类型。

大型组织可能有几种不同类型的内容,并有特定的人来管理每一种内容。 在这种情况下,默认用户角色并不理想,因为它可能会提供对整个区域的访问(或相反,取决于您的设置)。 但是,自定义角色将允许不同的用户仅查看您分配给他们的帖子类型。

用户只需要做一件事

在某些情况下,用户可能需要对您网站上的功能具有独特的访问权限。 例如,假设您开设了一个在线课程。 您可能有一个团队成员需要访问前端和后端的整个课程,以确保其正常工作并且内容准确。

如果这个团队成员需要做的只是专注于课程本身,那么管理员帐户可能会矫枉过正。 使用自定义用户角色,他们可以完成他们的工作,而无需费力地选择任何不必要的选项。

您需要“升级”现有角色

有时,现有的 WordPress 用户角色几乎是完美的。 但也许用户需要访问的还有一件额外的事情

担任作者角色。 默认情况下,他们可以发布帖子——但不能发布页面。 通常,您必须将用户提升到编辑器。 在某些情况下这可能很好。 但是,可能包含您不希望该特定用户访问的其他功能。 在这里,创建自定义角色可能是最佳选择。

如何创建自定义用户角色

创建自定义 WordPress 用户角色有两种不同的方法。 第一种是向自定义插件或主题的functions.php文件中添加一些代码。 第二种方法是安装众多可用插件之一,使您能够创建和编辑角色。

您使用的方法实际上取决于个人喜好。 如果您希望能够以可视方式选择用户功能,那么插件是最有意义的。 但是,如果您对代码感到满意和/或不希望其他管理员使用设置,则添加代码段可能适合您。

无论哪种方式,我们都会让您开始使用一些代码示例和一系列插件。

首先,建议您研究 WordPress 提供的各种用户功能。 另请注意,自定义帖子类型也可以具有其自定义功能。 这在我们上面提到的第一个示例场景中会派上用场。

方法 #1:添加代码片段

在本例中,我们将创建一个名为“Staff Member”的用户角色。 这包括作者角色的所有功能,但还具有编辑和发布页面的附加功能。

我们分配给角色的每个功能都列在下面的代码段中,并设置为“ true ”。 这里的例外是我们不希望具有此角色的用户删除已发布的页面,因此我们明确将其设置为“ false ”——只是为了安全起见。

同样,此代码将进入您主题的functions.php文件或可选地进入自定义插件。

 /* Create Staff Member User Role */ add_role( 'staff_member', // System name of the role. __( 'Staff Member' ), // Display name of the role. array( 'read' => true, 'delete_posts' => true, 'delete_published_posts' => true, 'edit_posts' => true, 'publish_posts' => true, 'upload_files' => true, 'edit_pages' => true, 'edit_published_pages' => true, 'publish_pages' => true, 'delete_published_pages' => false, // This user will NOT be able to delete published pages. ) );

一旦我们保存了这段代码并在浏览器中刷新了我们的网站,我们就可以添加一个具有此角色的新用户。

WordPress 添加新用户屏幕。

当我们具有员工角色的用户登录时,他们可以看到页面和帖子。

登录用户会看到帖子和页面。

另一种选择是简单地向现有的作者角色添加一些功能。 我们可以通过add_cap()函数做到这一点:

 /* Upgrade the Author Role */ function author_level_up() { // Retrieve the Author role. $role = get_role( 'author' ); // Let's add a set of new capabilities we want Authors to have. $role->add_cap( 'edit_pages' ); $role->add_cap( 'edit_published_pages' ); $role->add_cap( 'publish_pages' ); } add_action( 'admin_init', 'author_level_up');

这两个代码片段基本上都做同样的事情。 但是,如果您已经拥有具有 Author 角色的用户并且不希望他们拥有额外的能力,那么添加新的 Staff Member 角色可能是最好的。

方法2:使用插件

上述功能可以通过使用插件轻松复制。 已经为这种类型的用户角色和能力管理创建了几个。 它们的优势在于它们利用 GUI 并为整个过程增加了一层便利。

让我们来看看一些比较流行的选项:

用户角色编辑器

使用用户角色编辑器,添加或删除角色的功能就像选中或取消选中设置中的框一样简单。 您还可以创建自己的自定义用户角色并设置所需的任何功能。 该插件还支持 WordPress 的多站点安装。

WPFront 用户角色编辑器

WPFront 用户角色编辑器提供类似的功能,让您添加或编辑用户角色。 但它也允许管理员将用户从一个角色迁移到另一个角色,并将多个角色分配给各个用户。

高级访问管理器

如果您正在寻找范围更广的东西,Advanced Access Manager 可能是您的不错选择。 它提供角色和功能管理,以及控制对前端和后端功能(如菜单和小部件)的访问的能力。

了解你的角色

创建自定义用户角色的能力只是喜欢 WordPress 的另一个原因。 这是非常小众的东西,但是当您需要超出默认角色的东西时,它会非常有用。

因此,下次当您发现自己处于需要控制用户功能的情况时,请知道您拥有这个强大的工具供您使用。