使用CMS构建网站时,始终欢迎灵活性。值得庆幸的是,WordPress拥有比其份额更多的内容,其主题和插件使我们能够创建高度自定义的体验。
但是它的灵活性不只是我们可以安装的其他东西。实际上,它已直接植入软件的核心。
创建自定义用户角色的能力是一个出色的例子。今天,我们将看看它们是什么,为什么要使用它们以及几种不同的技术来创建它们。
精细控制用户权限
在每个WordPress安装中,您已经可以访问一系列默认用户角色。它们使我们可以指定用户在网站的后端(即仪表板)中可以做什么和不能做什么。
这是很合理的。并非每个管理内容的人都需要具有管理权限。因此,我们可以根据需要为每个用户分配一个角色。这是一项很好的安全措施,可以更好地确保您不会遇到意外事故,甚至可以防止他人疯狂安装插件。
这也适用于前端。如果只希望已登录的用户看到特定的内容,则可以将此功能构建到主题中,或通过成员资格插件将其添加。
但是,尽管默认用户角色(管理员,编辑者,作者,贡献者和订阅者)很有用,但有时您需要额外的控制权。这就是WordPress提供创建自己的自定义角色的功能的原因。
何时使用自定义角色
自定义用户角色可以在许多情况下派上用场。以下是您可能会遇到的一些较常见的问题:
您有管理不同内容类型的用户
默认情况下,WordPress带有两种面向公众的关键内容类型:帖子和页面。但是通过使用自定义帖子类型可以轻松添加更多内容。例如,您可以为新闻稿或工作人员创建帖子类型。另外,各种插件也可以安装自己的帖子类型。
大型组织可能具有几种不同类型的内容,并且要由特定的人员来管理每个内容。在这种情况下,默认用户角色不是理想的选择,因为它可能提供对整个批次的访问(或相反,具体取决于您的设置)。但是,自定义角色将允许不同的用户仅查看您为其分配的帖子类型。
用户只需要做一件事
在某些情况下,用户可能需要对您的网站上的功能进行独特级别的访问。例如,假设您开设了一个在线课程。您可能有一个团队成员,需要在前端和后端访问整个课程,以确保其正确运行并且内容正确。
如果此团队成员需要做的只是专注于课程本身,那么管理员帐户可能就太过分了。使用自定义用户角色,他们可以完成工作,而不必费力去做任何不必要的选择。
您需要“升级”现有角色
有时,现有的WordPress用户角色几乎是完美的。但是,也许用户需要访问一件事。
担任作者角色。默认情况下,他们可以发布帖子,但不能发布页面。通常,您必须将用户提升到Editor。在某些情况下可能会很好。但是,可能包括其他功能,您不希望该特定用户访问。在这里,创建自定义角色可能是最好的选择。
如何创建自定义用户角色
创建自定义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. ) );
保存此代码并在浏览器中刷新网站后,我们可以添加具有此角色的新用户。
具有工作人员角色的用户登录后,他们可以看到页面和帖子。
另一种选择是向现有的Author角色简单添加一些功能。我们可以通过以下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');
这两个代码片段本质上都做同样的事情。但是,如果您已经拥有具有“作者”角色的用户并且不希望他们具有额外的功能,则最好添加新的“职员”角色。
方法2:使用插件
上面的功能可以通过使用插件轻松复制。已经针对这种类型的用户角色和功能管理创建了多个应用程序。它们提供的优势在于,它们利用GUI并为整个过程增加了一层便利。
让我们看一些较流行的选项:
用户角色编辑器
使用用户角色编辑器,添加或删除角色功能就像在设置中选中或取消选中一个框一样简单。您还可以创建自己的自定义用户角色并设置所需的任何功能。该插件还支持WordPress的多站点安装。
WPFront用户角色编辑器
WPFront用户角色编辑器提供了类似的功能,可让您添加或编辑用户角色。但是,它还允许管理员将用户从一个角色迁移到另一个角色,并将多个角色分配给单个用户。
Advanced Access Manager
如果您正在寻找范围更广的产品,Advanced Access Manager可能是您的理想选择。它提供角色和功能管理,以及控制对前端和后端功能(如菜单和小部件)的访问的功能。
了解你的角色
创建自定义用户角色的能力只是喜欢WordPress的另一个原因。这是非常利基的,但是当您需要超出默认角色的内容时,它可能会非常有用。
因此,下次在需要控制用户功能的情况下,请知道您已拥有此强大的工具。