問題描述
編寫 WordPress 插件時,通常需要設置選項,以便網站上的角色可以訪問某些功能或內容。要做到這一點,插件開發者需要獲取在該選項中使用的網站上存在的角色列表。因為可以創建自定義角色,我們不能假定默認角色是唯一可用的角色。
獲取列表的最佳方法是什麼?
最佳解決方案
角色存儲在全局變量 $wp_roles 中。
理想的功能是 get_editable_roles() /wp-admin/includes/user.php
function get_editable_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters('editable_roles', $all_roles);
return $editable_roles;
}
“editable” 部分是因為它提供其他插件有機會過濾列表,以防其他管理員除了'edit_users'權限 (因此’admin’ 需要從列表中刪除,否則該用户可以使自己管理) 。用於創建自定義角色的角色管理插件是使用該過濾器的角色管理插件。否則這個功能本質上是 get_roles()(不存在) 。
大概你的插件只會向具有 admin-level 功能的人 ('manage_options') 提供有問題的設置頁面,並且基本上是一個可以訪問所有角色的管理員,所以過濾器不應該影響你。
還有 wp_dropdown_roles(),它為<select> 列表提供了<option> 字段的作用 (儘管複選框在許多情況下可能會更好,您可以選擇誰可以訪問某些內容) 。
次佳解決方案
嘗試這個:
function get_role_names() {
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
return $wp_roles->get_names();
}
PS 呃,錯過瞭解釋和答覆,太快了:)
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。