Question

En écrivant WordPress plugins, il est souvent nécessaire de mettre en place des options pour lesquelles les rôles sur le site ont accès à certaines fonctionnalités ou du contenu. Pour ce faire, un plugin dev doit chercher la liste des rôles qui existent sur le site pour une utilisation dans l'option. Parce que les rôles personnalisés peuvent être créés, nous ne pouvons assumer les rôles par défaut sont les seuls disponibles.

Quelle est la meilleure façon de récupérer la liste?

Était-ce utile?

La solution

Les rôles sont stockés dans la $wp_roles variable globale.

La fonction idéale est get_editable_roles() /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;
}

« modifiable » partie est car il offre d'autres plug-ins une chance de filtrer la liste au cas où quelqu'un d'autre que l'administrateur a le privilège de 'edit_users' (et donc « admin » doit être retiré de la liste, autre que l'utilisateur pourrait se faire admin). plugins de gestion des rôles utilisés pour créer des rôles personnalisés sont ceux qui utiliseraient ce filtre. Sinon, cette fonction est essentiellement get_roles() (qui n'existe pas) .

On peut supposer que votre plugin propose uniquement la page des paramètres en question à quelqu'un qui a des capacités de niveau d'administration comme 'manage_options' et est essentiellement un administrateur avec accès à tous les rôles, de sorte que le filtre ne doit pas vous affecter.

Il y a aussi wp_dropdown_roles() qui vous donne les rôles <option> champs pour une liste de <select> (bien que les cases à cocher sont susceptibles de mieux travailler dans de nombreux scénarios où vous avez le choix qui a accès à quelque chose) .

Autres conseils

Essayez ceci:

function get_role_names() {

global $wp_roles;

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

return $wp_roles->get_names();
}

PS heh, a raté cette explication et la réponse aussi rapide me:)

Voici comment vous pouvez trouver la liste des rôles sans plug-ins ou de la fonction http://screencast.com/t/uaWsGLAR3Sh

Pour ceux qui ont des sites multilingues, la fonction

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;
}

renvoie tableau localisé comme celui-ci (noms de rôle sont en langue slovaque):

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ľ
        )
)

Voici comment obtenir un tableau de tous les rôles d'utilisateurs existants et les capacités de chaque rôle, dans WordPress. Si vous ne voulez pas l'imprimer à l'écran, omettre la dernière ligne. Les rôles de variable $ sur la ligne 2 tiendra le tableau des utilisateurs et des capacités afin que vous puissiez l'utiliser mais vous avez besoin. Voir ci-dessous un exemple du tableau retourné.

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

// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top