Rollen-Dropdown-Auswahl in alphabetischer Reihenfolge im Dashboard


7

Die Site, an der ich arbeite, wird über ein Mitglieder-Plugin eine sehr große Anzahl eindeutiger Benutzerrollen haben. Aus diesem Grund möchte ich, dass die Dropdown-Auswahl Rolle auf der Seite Neuen Benutzer hinzufügen die Rollen alphabetisch anzeigt und nicht in absteigender Reihenfolge der Erstellung.

Gibt es eine Möglichkeit, dies zu tun?

Antworten:


7

Fast der gleiche Ansatz, den One Trick Pony gewählt hat, aber ich verwende übersetzte Namen und uasort()(um die Schlüssel zu erhalten):

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

Als Plugin auf GitHub .


@Chirico Siehe mein Update, die erste Version war fehlerhaft.
— Fuxia

Nochmals vielen Dank, ich habe gerade Probleme mit der ersten Version. Es sieht so aus, als wären die Dinge so, wie sie jetzt sein sollten.
— Chirico

3

Anscheinend gibt es einen Filter, den Sie in der get_editable_rolesFunktion verwenden können (die auf dieser Seite aufgerufen wird):

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

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

  return $roles;
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.