WordPress: einfaches Userroles-Array für Rollenauswahl in Einstellungen

garage 1030787 1920
Bildquelle: Pixabay, Unsplash

Um die Sichtbarkeitseinstellungen nur für angemeldete Benutzer zugänglicher Elemente zu steuern benötigte ich ein Formularfeld aus dem eine WordPress-Rolle gewählt werden kann. Dafür genügt ein einfaches Array mit dem Slug der Rolle und dem (übersetzten) Namen. Die Rolle ist der Schlüssel, der Name der Rolle der Wert.

function ppt_helper_roles_array() {
     global $wp_roles;
     foreach ( $wp_roles->roles as $role => $details ) {
         $roles[$role] = $details['name'];
     }
     return $roles;
}
Array ( 
    [administrator] => Administrator 
    [editor] => Editor 
    [author] => Author 
    [contributor] => Contributor 
    [subscriber] => Subscriber 
)

Anwendungsbeispiel

$options = get_option('settings_group');
echo '<select name="settings_group[role_setting]">';
foreach ( ppt_helper_roles_array() as $role => $label ) {
    echo '<option '.( $role == $options['role_setting'] ? 'selected="selected"' : '' ).' value="'.esc_attr($role).'">' . esc_html($label) . '</option>';
}
echo '</select>';

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable