Como alterar o papel de um usuário?
9 respostas
- votos
-
- 2010-12-01
Veja o wp_user classe ,vocêpode usarissopara adicionare removerfunçõesparaum usuário.
edit: Eu realmente deveriaterfornecidomaisinformações comesta respostainicialmente,entãoestou adicionandomaisinformações abaixo.
Maisespecificamente,afunção de um usuáriopode ser definida criando umainstância da classe WP_USERe chamando o
add_role()
ouremove_role()
métodos.Exemplo
Altere umafunção de assinantespara oeditor
// 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' );
Espero que sejamais útil que aminha respostainicial,quenãoeranecessariamentetão ú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 ()`e `add_rule ()` 'salvar dadosnobanco de dados?`remove_role()` and `add_rule()` save data to the database?
- 0
- 2019-10-29
- b_dubb
-
Sim @b_dubb,ambos osmétodoseconomizamem db através dométodo `upding_user_meta ()` [aqui] (https://developer.wordpress.org/reference/functions/update_user_meta/).Veja 'Add_Role () `[aqui] (https://developer.wordpress.org/reference/classes/wp_user/add_role/)e` remove_role () `[aqui] (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
-
Isso émuito útil.Obrigado.That's pretty handy. Thanks.
- 0
- 2020-01-07
- b_dubb
-
`set_role ()` removerátodas asfunçõese adicionará afunçãoespecificadaem um comando`set_role()` will remove all roles and add the specified role in one command
- 0
- 2020-04-18
- G-J
-
- 2015-06-14
Apenasnote que há umamaneiramais simples de alterar afunção do usuário que éespecialmente útil quando vocênão sabe opapel atual do usuário:
->set_role()
Exemplo:
// 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' );
-
Lembre-se que o set_role removerá asfunções anteriores do usuárioe atribuirá anovafunção.Remember that set_role will remove the previous roles of the user and assign the new role.
- 0
- 2016-05-03
- shasi kanth
-
Isso éperfeitoparaformulários de registropersonalizados.Primeiro registre os usuários semfunçõese depois de adicionarfunção quando confirmaremail.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
Paraextrapolarna resposta do T31os Vocêpodebater algo assimem seu arquivo defunções se você quiserfazerissoprogramaticamente combaseem uma condição
$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' ); } }
-
Eu acho que seu uso de `$blogid`estáerrado.[`get_users ()`] (http://codex.wordpress.org/function_reference/get_users) usará o ID doblog atualporpadrão de qualquermaneira.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
-
Sim,nomeu caso,apastaera apenas de umexemplomultisite.Eunão defini aquitão obviamente,ele lançaria umerro.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
Vocêpode alterar afunção de qualquer usuário,editando operfil dos usuários.Não hánecessidade de adicionarmais código quandoesta opçãojáestiverincorporadano WordPress.
ou
Vocêpode usar o códigopara alterartodos os usuários atuais com afunção de assinanteparaeditor:
$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
Há umafunção WordPressparaisso!
Eu acho que émelhor usarfunções do WordPress,see quandoestiverem disponíveis.
Vocêpode usar o wp_insert_user () função,onde um dos argumentos que vocêprecisaráParafornecer é o $ USERDATA ['Role'].Neste argumento,vocêpodeespecificar afunção que deseja alterar o usuário.
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.
-
WPnão reconheceessafunção.Eutenho umerro "undefinedfunção".wp doesn't recognize that function. I got an "undefined function" error.
- 0
- 2010-12-01
- Joann
-
Pela aparência dela,wp_insert_user ()parecefazerexatamente omesmo.Quando vocêforneça um ID,esse ID é atualizado.Nenhum ID é adicionarnovo usuário.Realmentenão sei qual a diferençaentre WP_UPDATE_USER ()e wp_insert_user () aindaestá.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
Vocêpode usar wp_update_user .Seu código Shoud ser assim:
<?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
Eu sei que é umpostmuito antigo,mas descobri que ospapéispara os usuários são armazenadosem
wp_usermeeta code>tabela comtecla
wp_capabilities
emmeta_key
Coluna.Se você quiser alterar afunção do usuário,vocêpodefazê-loporestafunção simples.
Função Change_Role ($ ID,$new_role) { Global $table_prefix; if (is_array ($new_role)) { $new_role_array=$new_role; }outro{ $new_role_array=matriz ($new_role=>true); } return update_user_meta ($ ID,$table_prefix.'Capabilidades ',$new_role_array); }
Há duasmaneiras de usarestafunção.
Se você quiser alterar afunção de uma únicafunção.
Change_Role (2,'Editor');//editor é onovopapel
ou se você quiser adicionar váriasfunções ao usuário,use asfunções comomatrizno segundoparâmetro.
$ RoleS_array=Array ('Editor'=& GT; Administrador '=>true);//roles array. Change_Role (2,$ Rololes_Array);
Boa sorte.
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.
Eutenhofunçõespersonalizadasnaminha configuraçãoe quero ser capaz de alterar automaticamente afunção de um usuário através de umafunção.Diga o usuário Atem umpapel de assinante,como omudeparaeditor?Ao adicionar umafunção,apenas:
Como alterar umafunção?Há algo como:
update: Eu acho queeste vaifazer: