仪表板中按字母顺序排列的角色下拉选择

时间:2012-12-03 作者:Chirico

我正在开发的网站将通过一个成员插件拥有大量独特的用户角色。因此,我希望在“添加新用户”页面上选择“角色”下拉列表,以按字母顺序显示角色,而不是按创建的降序。

有没有办法做到这一点?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

几乎同样的方法,一匹小马驹选择了,但我使用的是翻译后的名字和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.

SO网友:onetrickpony

显然有一个过滤器可以在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;
});

结束

相关推荐

Hide php Notices in Dashboard

当我编写主题时,我会启用WP-DEBUG。这确保了正确的PHP代码。遗憾的是,大多数插件开发人员一直在使用不存在的变量:echo $args[\'title\']; Notice: Undefined index: title in /wp-content/plugins/easy-fancybox/easy-fancybox.php on line 301 而不是echo ( isset($args[\'title\']) ? $args[\'title\'] : \'\'