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網站中的用戶角色和功能。它的功能集就像前面討論的插件一樣,但是它有兩個突出的功能。

將所有用戶從一個角色遷移到另一個角色

將所有用戶從一個角色遷移到另一個角色

安裝並激活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的與眾不同!查看我們的計劃

相關文章