如何在 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 的另一個原因。 這是非常小眾的東西,但是當您需要超出默認角色的東西時,它會非常有用。

因此,下次當您發現自己處於需要控制用戶功能的情況時,請知道您擁有這個強大的工具供您使用。