web-dev-qa-db-fra.com

ordre de sélection alphabétique des rôles dans le tableau de bord

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?

7
Chirico

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'] )
    );
}

En tant que plugin sur GitHub .

7
fuxia

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;
});
3
onetrickpony