問題描述

我正在處理的網站將通過一個成員插件擁有大量獨特的用户角色。因此,我想在 「添加新用户」 頁面上選擇 「角色 drop-down」,以按字母順序顯示角色,而不是創建的降序。

有沒有辦法做到這一點?

最佳解決方案

One Trick Pony 選擇了幾乎相同的方法,但是我使用翻譯的名稱和 uasort()(保留鍵):

add_filter( 'editable_roles', 't5_sort_editable_roles' );

/**
 * Array of roles.
 *
 * @wp-hook editable_roles
 * @param   array $roles
 * @return  array
 */
function t5_sort_editable_roles( $roles )
{
    uasort( $roles, 't5_uasort_editable_roles' );
    return $roles;
}
/**
 * Compare translated role names.
 *
 * @param  array $a First role
 * @param  array $b Second role
 * @return number
 */
function t5_uasort_editable_roles( $a, $b )
{
    return strcasecmp(
        translate_user_role( $a['name'] ),
        translate_user_role( $b['name'] )
    );
}

As a plugin on GitHub

次佳解決方案

顯然有一個可以在 get_editable_roles 功能中使用的過濾器 (在該頁面中調用):

add_filter('editable_roles', function($roles){

  // sort alphabetically (ignores case)
  usort($roles, function($a, $b){
    return strcasecmp($a["name"], $b["name"]);
  });

  return $roles;
});

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。