Comment changer le rôle d'un utilisateur?
9 réponses
- votes
-
- 2010-12-01
Consultez la classe WP_User ,vouspouvez l'utiliserpour ajouteret supprimer des rôlespourun utilisateur.
MODIFIER: J'aurais vraiment dûfournirplus d'informations avec cette réponse au départ,doncj'ajouteplus d'informations ci-dessous.
Plusprécisément,le rôle d'un utilisateurpeut être définien créant uneinstance de la classe WP_useret en appelant lesméthodes
add_role()
ouremove_role()
.Exemple
Changer le rôle d'un abonnéen éditeur
// NOTE: Of course change 3 to the appropriate user ID $u = new WP_User( 3 ); // Remove role $u->remove_role( 'subscriber' ); // Add role $u->add_role( 'editor' );
J'espère que cela seraplus utile quema réponseinitiale,quin'étaitpasnécessairement aussi utile.
See the WP_User class, you can use this to add and remove roles for a user.
EDIT: I really should have provided more information with this answer initially, so i'm adding more information below.
More specifically, a user's role can be set by creating an instance of the WP_user class, and calling the
add_role()
orremove_role()
methods.Example
Change a subscribers role to editor
// NOTE: Of course change 3 to the appropriate user ID $u = new WP_User( 3 ); // Remove role $u->remove_role( 'subscriber' ); // Add role $u->add_role( 'editor' );
Hopefully that's more helpful than my initial response, which wasn't necessarily as helpful.
-
`remove_role ()`et `add_rule ()` sauvegardent les données dans labase de données?`remove_role()` and `add_rule()` save data to the database?
- 0
- 2019-10-29
- b_dubb
-
Oui @b_dubb,les deuxméthodes sont sauvegardées dans db via laméthode `update_user_meta ()` [ici] (https://developer.wordpress.org/reference/functions/update_user_meta/).Voir `add_role ()` [ici] (https://developer.wordpress.org/reference/classes/wp_user/add_role/)et `remove_role ()` [ici] (https://developer.wordpress.org/reference/classes/wp_user/remove_role/)Yes @b_dubb, both methods save to db through the `update_user_meta()` method [here](https://developer.wordpress.org/reference/functions/update_user_meta/). See `add_role()` [here](https://developer.wordpress.org/reference/classes/wp_user/add_role/) and `remove_role()` [here](https://developer.wordpress.org/reference/classes/wp_user/remove_role/)
- 1
- 2020-01-07
- Gonçalo Figueiredo
-
C'est assezpratique.Merci.That's pretty handy. Thanks.
- 0
- 2020-01-07
- b_dubb
-
`set_role ()` supprimeratous les rôleset ajoutera le rôle spécifiéen une seule commande`set_role()` will remove all roles and add the specified role in one command
- 0
- 2020-04-18
- G-J
-
- 2015-06-14
Notez simplement qu'ilexiste unmoyenplus simple demodifier le rôle de l'utilisateur,ce quiestparticulièrement utile lorsque vousne connaissezpas le rôle actuel de l'utilisateur:
->set_role()
Exemple:
// Fetch the WP_User object of our user. $u = new WP_User( 3 ); // Replace the current role with 'editor' role $u->set_role( 'editor' );
Just note that there is a simpler way to change the user role which is especially helpful when you do not know the current role of the user:
->set_role()
Example:
// Fetch the WP_User object of our user. $u = new WP_User( 3 ); // Replace the current role with 'editor' role $u->set_role( 'editor' );
-
N'oubliezpas que set_role supprimera les rôlesprécédents de l'utilisateuret attribuera lenouveau rôle.Remember that set_role will remove the previous roles of the user and assign the new role.
- 0
- 2016-05-03
- shasi kanth
-
C'estparfaitpour lesformulaires d'inscriptionpersonnalisés.Enregistrez d'abord les utilisateurs sans rôle,puis ajoutez un rôle lorsqu'ils confirment l'e-mail.This is perfect for custom registration forms. First register users with no roles and after that add role when they confirm email.
- 1
- 2017-09-15
- Ivijan Stefan Stipić
-
- 2012-10-29
Pourextrapoler sur la réponse det31os,vouspouvezgifler quelque chose comme ça dans votrefichier defonctions si vous voulez lefaireparprogrammationen fonction d'une condition
$blogusers = get_users($blogID.'&role=student'); foreach ($blogusers as $user) { $thisYear = date('Y-7'); $gradYear = date(get_the_author_meta( 'graduation_year', $user->ID ).'-7'); if($gradYear < $thisYear) { $u = new WP_User( $user->ID ); // Remove role $u->remove_role( 'student' ); // Add role $u->add_role( 'adult' ); } }
To extrapolate on t31os's answer you can slap something like this in your functions file if you want to do this programmatically based on a condition
$blogusers = get_users($blogID.'&role=student'); foreach ($blogusers as $user) { $thisYear = date('Y-7'); $gradYear = date(get_the_author_meta( 'graduation_year', $user->ID ).'-7'); if($gradYear < $thisYear) { $u = new WP_User( $user->ID ); // Remove role $u->remove_role( 'student' ); // Add role $u->add_role( 'adult' ); } }
-
Jepense que votre utilisation de «$blogID»estincorrecte.[`get_users ()`] (http://codex.wordpress.org/Function_Reference/get_users) utilisera detoutefaçon l'ID deblog actuelpar défaut.I think your usage of `$blogID` is wrong. [`get_users()`](http://codex.wordpress.org/Function_Reference/get_users) will use the current blog ID per default anyway.
- 0
- 2012-10-29
- fuxia
-
oui,dansmon cas,lapâte venaitjuste d'unexemplemultisite.Jene l'aipas définiicinonplus,donc évidemment celagénérerait uneerreur.yep, in my case the paste was just from a multisite example. I didn't define it here either so obviously it would throw an error.
- 0
- 2012-11-26
- Adam Munns
-
- 2015-04-16
Vouspouvezmodifier le rôle den'importe quel utilisateuren modifiant leprofil de l'utilisateur.Plusbesoin d'ajouter de code lorsque cette optionest déjàintégrée à WordPress.
Ou
Vouspouvez utiliser le codepour changertous les utilisateurs actuels avec le rôle d'abonnéen éditeur:
$current_user = wp_get_current_user(); // Remove role $current_user->remove_role( 'subscriber' ); // Add role $current_user->add_role( 'editor' );
You can change the role of any user by editing the users profile. No need to add any more code when this option is already built into WordPress.
Or
You could use code to change all current users with the subscriber role to editor:
$current_user = wp_get_current_user(); // Remove role $current_user->remove_role( 'subscriber' ); // Add role $current_user->add_role( 'editor' );
-
- 2010-12-01
Ilexiste unefonction WordPresspour ça!
Jepense qu'ilestpréférable d'utiliser lesfonctions WordPress,siet quandelles sont disponibles.
Vouspouvez utiliser lafonction wp_insert_user () ,où l'un des arguments dont vous aurezbesoinàfournirest le $ userdata ['role'].Dans cet argument,vouspouvez spécifier le rôle dans lequel vous souhaitezmodifier l'utilisateur.
There's a WordPress function for that!
I think it is best to use WordPress functions, if and when they are available.
You can use the wp_insert_user() function, where one of the arguments that you will need to provide is the $userdata['role']. In this argument you can specify the role that you want to change the user into.
-
wpne reconnaîtpas cettefonction.J'aieu uneerreur "fonctionnon définie".wp doesn't recognize that function. I got an "undefined function" error.
- 0
- 2010-12-01
- Joann
-
Àpremière vue,wp_insert_user () semblefaireexactement lamême chose.Lorsque vousfournissez un ID,cet IDestmis àjour.Aucun IDn'ajoute unnouvel utilisateur.Jene saispas vraiment quelleest la différenceentre wp_update_user ()et wp_insert_user (),pour lemoment.By the looks of it, wp_insert_user() seems to do the exact same. When you provide an ID, that ID gets updated. No ID is adding new user. Don't really know what the difference between wp_update_user() and wp_insert_user() is, yet.
- 0
- 2010-12-01
- Coen Jacobs
-
-
- 2016-11-09
Vouspouvez utiliser wp_update_user .Votre code devrait ressembler à ceci:
<?php $user_id = 3; $new_role = 'editor'; $result = wp_update_user(array('ID'=>$user_id, 'role'=>$new_role)); if ( is_wp_error( $result ) ) { // There was an error, probably that user doesn't exist. } else { // Success! } ?>
You can use wp_update_user. Your code shoud be like this:
<?php $user_id = 3; $new_role = 'editor'; $result = wp_update_user(array('ID'=>$user_id, 'role'=>$new_role)); if ( is_wp_error( $result ) ) { // There was an error, probably that user doesn't exist. } else { // Success! } ?>
-
- 2017-08-07
<?php $wuser_ID = get_current_user_id(); if ($wuser_ID) { // NOTE: Of course change 3 to the appropriate user ID $u = new WP_User( $wuser_ID ); // Remove role $u->remove_role( 'subscriber' ); // Add role $u->add_role( 'contributor' ); } ?>
<?php $wuser_ID = get_current_user_id(); if ($wuser_ID) { // NOTE: Of course change 3 to the appropriate user ID $u = new WP_User( $wuser_ID ); // Remove role $u->remove_role( 'subscriber' ); // Add role $u->add_role( 'contributor' ); } ?>
-
- 2019-03-27
Je sais que c'est untrès vieuxmessage,maisj'aitrouvé que les rôles des utilisateurs sont stockés dans latable
wp_usermeta
avec la cléwp_capabilities
dansmeta_key
colonne.Si vous souhaitezmodifier le rôle de l'utilisateur,vouspouvez lefaire avec cettefonction simple.
function change_role ($id,$new_role) { GLOBAL $table_prefix; if (is_array ($nouveau_role)) { $new_role_array=$nouveau_role; }autre{ $new_role_array=tableau ($new_role=>true); } return update_user_meta ($id,$préfixe_table.'capabilities ',$new_role_array); }
Il y a deuxmanières d'utiliser cettefonction.
Si vous souhaitezmodifier le rôle d'un seul rôle.
change_role (2,'éditeur');//éditeurest lenouveau rôle
Ou si vous souhaitez ajouterplusieurs rôles à l'utilisateur,utilisez les rôles commetableau dans le deuxièmeparamètre.
$ roles_array=array ('editor'=>true,'administrator'=>true);//tableau de rôles change_role (2,$ roles_array);
Bonne chance.
I know its a very old Post, but i have found that the roles for users are stored in
wp_usermeta
table with keywp_capabilities
inmeta_key
column.If you want to change the user role you can do it by this simple function.
function change_role($id, $new_role){ GLOBAL $table_prefix; if(is_array($new_role)){ $new_role_array = $new_role; }else{ $new_role_array = array( $new_role => true ); } return update_user_meta($id, $table_prefix.'capabilities', $new_role_array); }
There is two way to use this function.
If you want to change the role for a single role.
change_role(2, 'editor'); // editor is the new role
Or if you want to add multi roles to the user, use the roles as array in the second parameter.
$roles_array = array('editor' => true, 'administrator' => true); // roles array change_role(2, $roles_array);
Good luck.
J'ai des rôlespersonnalisés dansma configurationet je souhaitepouvoir changer automatiquement le rôle d'un utilisateur via unefonction.Supposons que l'utilisateur A ait un rôle ABONNEUR,comment le changeren EDITEUR?Lors de l'ajout d'un rôle,nousnous contentons de:
Que diriez-vous de changer de rôle?Y a-t-il quelque chose comme:
MISE À JOUR: Jepense que celui-cifera l'affaire: