Le site sur lequel je travaille aura un très grand nombre de rôles d'utilisateur uniques via un plugin de membres. Pour cette raison, j'aimerais que la liste déroulante Rôle apparaisse sur la page Ajouter un nouvel utilisateur pour afficher les rôles par ordre alphabétique, plutôt que par ordre de création décroissant.
Y a-t-il un moyen de faire ça?
Presque la même approche One Trick Pony a choisi, mais j'utilise les noms traduits et uasort()
(pour conserver les clés):
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'] )
);
}
Apparemment, il existe un filtre que vous pouvez utiliser dans la fonction get_editable_roles
(appelée dans cette page):
add_filter('editable_roles', function($roles){
// sort alphabetically (ignores case)
usort($roles, function($a, $b){
return strcasecmp($a["name"], $b["name"]);
});
return $roles;
});