Wie ändere ich die Rolle eines Benutzers?
9 Antworten
- Stimmen
-
- 2010-12-01
Siehe WP_User-Klasse . Hiermit können Sie Rollenfür hinzufügen undentfernenein Benutzer.
BEARBEITEN: Ich hätte anfangs wirklichmehr Informationenmit dieser Antwortbereitstellen sollen,daherfügeich unten weitere Informationen hinzu.
Insbesondere kann die Rolleeines Benutzersfestgelegt werden,indemeine Instanz der WP_user-Klasseerstellt und die Methoden
add_role()
oderremove_role()
aufgerufen werden.Beispiel
Ändern Sieeine Abonnentenrollein 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' );
Hoffentlichist das hilfreicher alsmeine erste Antwort,dienicht unbedingt so hilfreich war.
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 ()` und `add_rule ()` Datenin der Datenbank speichern?`remove_role()` and `add_rule()` save data to the database?
- 0
- 2019-10-29
- b_dubb
-
Ja,@b_dubb,beide Methoden werden über die Methode "update_user_meta ()" [hier] (https://developer.wordpress.org/reference/functions/update_user_meta/)in dbgespeichert.Siehe `add_role ()` [hier] (https://developer.wordpress.org/reference/classes/wp_user/add_role/) und `remove_role ()` [hier] (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
-
Dasist ziemlichpraktisch.Vielen Dank.That's pretty handy. Thanks.
- 0
- 2020-01-07
- b_dubb
-
`set_role ()`entfernt alle Rollen undfügt die angegebene Rollein einem Befehl hinzu`set_role()` will remove all roles and add the specified role in one command
- 0
- 2020-04-18
- G-J
-
- 2015-06-14
Beachten Sienur,dasseseine einfachere Möglichkeitgibt,die Benutzerrolle zu ändern. Diesistbesonders hilfreich,wenn Sie die aktuelle Rolle des Benutzersnicht kennen:
->set_role()
Beispiel:
// 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' );
-
Denken Sie daran,dass set_role die vorherigen Rollen des Benutzersentfernt und dieneue Rolle zuweist.Remember that set_role will remove the previous roles of the user and assign the new role.
- 0
- 2016-05-03
- shasi kanth
-
Diesistperfektfürbenutzerdefinierte Registrierungsformulare.Registrieren Sie zuerst Benutzer ohne Rollen undfügen Sie anschließendeine Rolle hinzu,wenn Sie die E-Mailbestätigen.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
Um die Antwort vont31os zuextrapolieren,können Sie soetwasin Ihre Funktionsdateieinfügen,wenn Sie diesprogrammgesteuertbasierend aufeiner Bedingung
tunmöchten$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' ); } }
-
Ich denke,Ihre Verwendung von "$blogID"istfalsch.[`get_users ()`] (http://codex.wordpress.org/Function_Reference/get_users) verwendet ohnehin standardmäßig die aktuelle Blog-ID.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
-
Ja,in meinem Fall war die Pastenurein Beispielfürmehrere Standorte.Ich habees auch hiernicht so offensichtlich definiert,dasseseinen Fehler auslösen würde.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
Sie können die Rolleeines Benutzers ändern,indem Sie das Benutzerprofilbearbeiten.Siemüssen keinen weiteren Code hinzufügen,wenn diese Optionbereitsin WordPressintegriertist.
Oder
Sie können Code verwenden,um alle aktuellen Benutzermit der Abonnentenrollein Editor zu ändern:
$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
Dafürgibt eseine WordPress-Funktion!
Ich denke,esist ambesten,WordPress-Funktionen zu verwenden,wenn und wann sie verfügbar sind.
Sie können die Funktion wp_insert_user () verwenden,bei dereines der Argumentebenötigt wirdzu liefernist die $ userdata ['Rolle'].In diesem Argument können Sie die Rolle angeben,in die Sie den Benutzer ändernmöchten.
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.
-
wperkennt diese Funktionnicht.Ich habeeinen Fehler "undefinierte Funktion"erhalten.wp doesn't recognize that function. I got an "undefined function" error.
- 0
- 2010-12-01
- Joann
-
Wiees aussieht,scheint wp_insert_user ()genau dasselbe zutun.Wenn Sieeine ID angeben,wird diese ID aktualisiert.Keine IDfügtneuen Benutzer hinzu.Ich weißnochnichtgenau,was der Unterschied zwischen wp_update_user () und wp_insert_user ()ist.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
Sie können wp_update_user verwenden.Ihr Code solltefolgendermaßen aussehen:
<?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
Ich weiß,dassesein sehr alter Beitragist,aberich habefestgestellt,dass die Rollenfür Benutzerin der Tabelle
wp_usermeta code>mit dem Schlüssel
wp_capabilities
inmeta_key Spalte.
Wenn Sie die Benutzerrolle ändernmöchten,können Sie diesmit diesereinfachen Funktiontun.
Funktion change_role ($id,$new_role) { GLOBAL $table_prefix; if (is_array ($new_role)) { $new_role_array=$new_role; }sonst{ $new_role_array=array ($new_role=>true); }} return update_user_meta ($id,$table_prefix.'capabilities ',$new_role_array); }}
Esgibt zwei Möglichkeiten,diese Funktion zu verwenden.
Wenn Sie die Rollefüreine einzelne Rolle ändernmöchten.
change_role (2,'editor');//Editorist dieneue Rolle
Wenn Sie dem Benutzermehrere Rollen hinzufügenmöchten,verwenden Sie die Rollen als Arrayim zweiten Parameter.
$ role_array=array ('editor'=>true,'Administrator'=>true);//Rollenarray change_role (2,$ role_array);
Viel Glück.
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.
Ich habebenutzerdefinierte Rollenin meinem Setup undmöchte die Rolleeines Benutzers übereine Funktion automatisch ändern können.Angenommen,Benutzer A hateine Abonnentenrolle. Wie ändereich siein EDITOR?Wenn Sieeine Rolle hinzufügen,gehen Sieeinfach wiefolgt vor:
Wie wäreesmit einem Rollenwechsel?Gibtes soetwas wie:
UPDATE: Ich denke,das wird reichen: