¿Cómo cambiar el rol de un usuario?
9 respuestas
- votos
-
- 2010-12-01
Consulte la clase WP_User ;puede usarlapara agregar yeliminar rolesparaun usuario.
EDITAR: Realmente debería haberproporcionadomásinformación conesta respuestainicialmente,así que agregarémásinformación a continuación.
Másespecíficamente,el rol de un usuario sepuedeestablecer creando unainstancia de la clase WP_user y llamando a losmétodos
add_role()
oremove_role()
.Ejemplo
Cambiar lafunción de un suscriptor aeditor
// 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' );
Con suerte,eso serámás útil quemi respuestainicial,quenofuenecesariamentetan útil.
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 ()` y `add_rule ()`guardan datosen labase de datos?`remove_role()` and `add_rule()` save data to the database?
- 0
- 2019-10-29
- b_dubb
-
Sí @b_dubb,ambosmétodos seguardanen labase de datos através delmétodo `update_user_meta ()` [aquí] (https://developer.wordpress.org/reference/functions/update_user_meta/).Consulte `add_role ()` [aquí] (https://developer.wordpress.org/reference/classes/wp_user/add_role/) y `remove_role ()` [aquí] (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
-
Esoesmuy útil.Gracias.That's pretty handy. Thanks.
- 0
- 2020-01-07
- b_dubb
-
`set_role ()`eliminarátodos los roles y agregaráel rolespecificadoen un comando`set_role()` will remove all roles and add the specified role in one command
- 0
- 2020-04-18
- G-J
-
- 2015-06-14
Solotengaen cuenta que hay unaformamás sencilla de cambiarel rol del usuario queesespecialmente útil cuandono conoceel rol actual del usuario:
->set_role()
Ejemplo:
// 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' );
-
Recuerde que set_roleeliminará los roles anteriores del usuario y asignaráelnuevo rol.Remember that set_role will remove the previous roles of the user and assign the new role.
- 0
- 2016-05-03
- shasi kanth
-
Estoesperfectoparaformularios de registropersonalizados.Primero,registre a los usuarios sin roles y luego agregue un rol cuando confirmenel correoelectrónico.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
Paraextrapolar la respuesta det31os,puede agregar algo comoestoen su archivo defunciones si desea hacerloprogramáticamenteen función de una condición
$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' ); } }
-
Creo que su uso de `$blogID`esincorrecto.[`get_users ()`] (http://codex.wordpress.org/Function_Reference/get_users) usaráel ID deblog actualpor defecto detodosmodos.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
-
sí,en mi caso,lapastafue solo de unejemplo de varios sitios.Tampoco lo definí aquí,así que obviamente arrojaría unerror.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
Puede cambiarel rol de cualquier usuarioeditandoelperfil del usuario.Noesnecesario agregarmás código cuandoesta opción yaestáintegradaen WordPress.
O
Puede usar códigopara cambiartodos los usuarios actuales con lafunción de suscriptor aeditor:
$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
¡Hay unafunción de WordPressparaeso!
Creo queesmejor utilizar lasfunciones de WordPress,siempre y cuandoestén disponibles.
Puede utilizar lafunción wp_insert_user () ,donde uno de los argumentos quenecesitaráproporcionares $ userdata ['rol'].Eneste argumento,puedeespecificarel rol al que desea cambiar al usuario.
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.
-
wpno reconoceesafunción.Recibí unerror de "funciónindefinida".wp doesn't recognize that function. I got an "undefined function" error.
- 0
- 2010-12-01
- Joann
-
Por lo queparece,wp_insert_user ()parece hacerexactamente lomismo.Cuandoproporciona unaidentificación,esaidentificación se actualiza.No IDestá agregando unnuevo usuario.Todavíano sé cuáles la diferenciaentre wp_update_user () y wp_insert_user ().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
Puede utilizar wp_update_user .Tu código debe ser así:
<?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
Sé quees unapublicaciónmuy antigua,pero descubrí que los roles de los usuarios se almacenanen latabla
wp_usermeta
con la clavewp_capabilities
enmeta_key
columna.Si desea cambiarel rol de usuario,puede hacerlo conesta sencillafunción.
función change_role ($id,$new_role) { GLOBAL $table_prefix; if (is_array ($new_role)) { $new_role_array=$new_role; }más{ $new_role_array=array ($new_role=>true); } return update_user_meta ($id,$table_prefix.'capabilities ',$new_role_array); }
Hay dosformas de utilizarestafunción.
Si desea cambiar lafunciónpor una únicafunción.
change_role (2,'editor');//editoreselnuevo rol
O si desea agregarmúltiples roles al usuario,use los roles comomatrizen el segundoparámetro.
$ roles_array=array ('editor'=>true,'administrator'=>true);//matriz de roles change_role (2,$ roles_array);
Buena suerte.
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.
Tengo rolespersonalizadosen mi configuración y quieropoder cambiar automáticamenteel rol de un usuario através de unafunción.Digamos queel usuario Atiene un rol de SUSCRIPTOR,¿cómo lo cambio a EDITOR?Al agregar un rol,simplemente:
¿Quétal cambiar un rol?¿Hay algo como:
ACTUALIZACIÓN: Creo queeste servirá: