Obtenir une liste des rôles actuellement disponibles sur un site WordPress?
-
-
Remarque: Cette question a étéposée à l'originepar Ryan Bilesky sur la liste de diffusion wp-hackerset j'ai réponduparmoi.Je l'ai ajoutéici car c'est un cas clair de question debonnepratique que lesgenspourraientposer àgoogle :)Note: This question was originally asked by Ryan Bilesky on the wp-hackers mailing list and answered by me. I added it here because it's a clear case of best-practice question that people might ask google :)
- 6
- 2010-09-11
- jerclarke
-
Hé * @ Jeremy Clarke * - Vraiment heureux d'avoir votreparticipationiciet ce sontexactement lestypes de choses quenous recherchonsici;réponses liées aux questions courantes quipeuvent également révéler lesmeilleurespratiques.Gloire!Hey *@Jeremy Clarke* - Really glad to have your participation here and these are exactly the types of things we are looking for here; answers related to common questions that can also reveal best practices. Kudos!
- 1
- 2010-09-11
- MikeSchinkel
-
5 réponses
- votes
-
- 2010-09-11
Les rôles sont stockés dans la variableglobale
$wp_roles
.Lafonctionidéaleest
get_editable_roles()
depuis/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; }
Lapartie "modifiable" estparce qu'elle offre à d'autresplugins une chance defiltrer la liste au cas où quelqu'un d'autre que l'administrateur aurait leprivilège
'edit_users'
(et donc 'admin 'doit être supprimé de la liste,sinon cet utilisateurpourrait devenir administrateur). Lesplugins degestion des rôles utiliséspour créer des rôlespersonnalisés sont ceux qui utiliseraient cefiltre. Sinon,cettefonctionestessentiellementget_roles()
(quin'existepas) .Vraisemblablement,votrepluginn'offrira lapage deparamètresen question qu'à quelqu'un qui a des capacités deniveau administrateurtelles que
'manage_options'
et quiestessentiellement un administrateur ayant accès àtous les rôles,donc lefiltrene devraitpas vous affecte.Ilexiste également
wp_dropdown_roles()
qui vous donne les rôles sousforme de champs<option>
pour une liste<select>
(bien que les cases à cocher soient susceptibles demieuxfonctionner dans denombreux scénarios où vous choisir qui a accès à quelque chose) .Roles are stored in the global variable
$wp_roles
.The ideal function is
get_editable_roles()
from/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; }
The "editable" part is because it offers other plugins a chance to filter the list in case someone other than admin has
'edit_users'
privilege (and thus 'admin' needs to be removed from the list, else that user could make themselves admin). Role management plugins used to create custom roles are the ones that would be using that filter. Otherwise this function is essentiallyget_roles()
(which doesn't exist).Presumably your plugin will only offer the settings page in question to someone who has admin-level capabilities like
'manage_options'
and is basically an admin with access to all roles, so the filter shouldn't affect you.There is also
wp_dropdown_roles()
which gives you the roles as<option>
fields for a<select>
list (though checkboxes are likely to work better in many scenarios where you're choosing who has access to something).-
Remarque:j'ai créé cettefonction dans le cadre d'unpatchpour rendre WPplus sécurisé,je suis doncbiaiséen safaveur;)Note: I created this function as part of a patch to make WP more secure, so I'm biased in its favor ;)
- 3
- 2010-09-11
- jerclarke
-
- 2010-09-11
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,j'aimanqué cetteexplicationet cette réponse,trop vitemoi :)
Try this:
function get_role_names() { global $wp_roles; if ( ! isset( $wp_roles ) ) $wp_roles = new WP_Roles(); return $wp_roles->get_names(); }
PS heh, missed that explanation and reply, too fast me :)
-
- 2016-01-26
Voici commenttrouver la liste des rôles sanspluginsni fonction http://screencast.com/t/uaWsGLAR3Sh
Here is how you can find the list of roles without any plugins or function http://screencast.com/t/uaWsGLAR3Sh
-
Bien que ce lienpuisse répondre à la question,ilestpréférable d'inclure lespartiesessentielles de la réponseiciet defournir le lienpour référence.Les réponses aux liens uniquementpeuvent devenirinvalides si lapage liée change.While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes.
- 7
- 2016-01-26
- Gabriel
-
- 2016-05-25
Pour ceux qui ont un sitemultilingue,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 untableau localisé comme celui-ci (lesnoms de rôle sonten 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ľ ) )
For those which have multilingual site, function
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; }
returns localized array like this (role names are in Slovak language):
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ľ ) )
-
- 2019-09-09
Voici comment obtenir untableau detous les rôles utilisateurexistantset les capacités de chaque rôle dans WordPress.Si vousne souhaitezpas l’imprimer à l’écran,omettez la dernière ligne.La variable $ roles sur la ligne 2 contiendra letableau des utilisateurset des capacités afin que vouspuissiez l'utiliser comme vousen avezbesoin.Voir ci-dessouspour unexemple dutableau retourné.
global $wp_roles; $roles = $wp_roles->roles; // print it to the screen echo '<pre>' . print_r( $roles, true ) . '</pre>';
This is how to get an array of all the existing user roles, and the capabilities for each role, in WordPress. If you don’t want to print it to the screen, omit the last line. The $roles variable on line 2 will hold the array of users and capabilities so that you can use it however you need to. See below for an example of the returned array.
global $wp_roles; $roles = $wp_roles->roles; // print it to the screen echo '<pre>' . print_r( $roles, true ) . '</pre>';
Lors de l'écriture deplugins WordPress,ilest souventnécessaire de configurer des optionspour lesquelles les rôles sur le site ont accès à certainesfonctionnalités ou contenus.Pour cefaire,un développeur deplugin doit récupérer la liste des rôles quiexistent sur le site à utiliser dans l'option.Étant donné que des rôlespersonnaliséspeuvent être créés,nousne pouvonspas supposer que les rôlespar défaut sont les seuls disponibles.
Quelleest lameilleurefaçon de récupérer la liste?