问题描述
我正在处理的网站将通过一个成员插件拥有大量独特的用户角色。因此,我想在 「添加新用户」 页面上选择 「角色 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'] )
);
}
次佳解决方案
显然有一个可以在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。