Frage

Beim Schreiben von WordPress -Plugins müssen häufig Optionen eingerichtet werden, für die Rollen auf der Website Zugriff auf bestimmte Funktionen oder Inhalte haben. Dazu muss ein Plugin -Entwickler die Liste der Rollen abrufen, die auf der Website in der Option verwendet werden sollen. Da benutzerdefinierte Rollen erstellt werden können, können wir nicht davon ausgehen, dass die Standardrollen die einzigen verfügbar sind.

Was ist der beste Weg, um die Liste zu holen?

War es hilfreich?

Lösung

Rollen werden in der globalen Variablen gespeichert $wp_roles.

Die ideale Funktion ist get_editable_roles() aus /wp-admin/includes/user.php

function get_editable_roles() {
    global $wp_roles;

    $all_roles = $wp_roles->roles;
    $editable_roles = apply_filters('editable_roles', $all_roles);

    return $editable_roles;
}

Das "Bearbeitbar" Der Teil liegt daran, dass es anderen Plugins die Möglichkeit bietet, die Liste zu filtern, falls jemand anderes als admin hat 'edit_users' Privilegien (und damit "admin" muss aus der Liste entfernt werden, sonst könnte sich der Benutzer selbst Administrator machen). Rollenverwaltungs -Plugins zum Erstellen benutzerdefinierter Rollen sind diejenigen, die diesen Filter verwenden würden. Andernfalls ist diese Funktion im Wesentlichen get_roles() (was nicht existiert).

Vermutlich bietet Ihr Plugin nur die betreffende Einstellungsseite an jemanden, der Funktionen auf Administratorebene hat 'manage_options' und ist im Grunde genommen ein Administrator mit Zugriff auf alle Rollen, sodass der Filter Sie nicht beeinflussen sollte.

Es gibt auch wp_dropdown_roles() was Ihnen die Rollen als Rollen gibt <option> Felder für a <select> aufführen (Obwohl Kontrollkästchen in vielen Szenarien, in denen Sie auswählen, wer Zugang zu etwas hat, besser funktionieren.).

Andere Tipps

Versuche dies:

function get_role_names() {

global $wp_roles;

if ( ! isset( $wp_roles ) )
    $wp_roles = new WP_Roles();

return $wp_roles->get_names();
}

Ps heh, verpasste diese Erklärung und Antwort, zu schnell mich :)

So finden Sie die Liste der Rollen ohne Plugins oder Funktionenhttp://screencast.com/t/uawsglar3sh

Für diejenigen, die mehrsprachige Site haben, Funktion

function wp_roles_array() {
    $editable_roles = get_editable_roles();
    foreach ($editable_roles as $role => $details) {
        $sub['role'] = esc_attr($role);
        $sub['name'] = translate_user_role($details['name']);
        $roles[] = $sub;
    }
    return $roles;
}

Gibt ein lokalisiertes Array wie dieses zurück (Rollennamen sind in der slowakischen Sprache):

Array
(
    [0] => Array
        (
            [role] => administrator
            [name] => Administrátor
        )

    [1] => Array
        (
            [role] => editor
            [name] => Editor
        )

    [2] => Array
        (
            [role] => author
            [name] => Autor
        )

    [3] => Array
        (
            [role] => contributor
            [name] => Prispievateľ
        )
)

So erhalten Sie in WordPress eine Reihe von vorhandenen Benutzerrollen und die Funktionen für jede Rolle. Wenn Sie es nicht auf den Bildschirm ausdrucken möchten, lassen Sie die letzte Zeile weg. Die Variable $ Rollen in Zeile 2 enthält die Reihe von Benutzern und Funktionen, damit Sie sie verwenden können, wie Sie es benötigen. Ein Beispiel für das zurückgegebene Array finden Sie unten.

global $wp_roles;
$roles = $wp_roles->roles; 

// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top