Как изменить роль пользователя?
9 ответ
- голосов
-
- 2010-12-01
См. класс WP_User . Вы можете использовать его для добавления и удаления ролей дляпользователь.
РЕДАКТИРОВАТЬ: Мне действительно нужно было изначально предоставить дополнительную информацию в этом ответе,поэтому я добавляю дополнительную информацию ниже.
Более конкретно,роль пользователя может быть установлена путем создания экземпляра класса WP_user и вызова методов
add_role()
илиremove_role()
.Пример
Измените роль подписчика на редактор
// 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' );
Надеюсь,это более полезно,чем мой первоначальный ответ,который не обязательно был столь же полезен.
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 () и add_rule () сохранять данные в базу данных?`remove_role()` and `add_rule()` save data to the database?
- 0
- 2019-10-29
- b_dubb
-
Да,@b_dubb,оба метода сохраняются в db с помощью метода update_user_meta () [здесь] (https://developer.wordpress.org/reference/functions/update_user_meta/).Смотрите `add_role ()` [здесь] (https://developer.wordpress.org/reference/classes/wp_user/add_role/) и `remove_role ()` [здесь] (https://developer.wordpress.org/reference/классы/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
-
Это очень удобно.Благодарю.That's pretty handy. Thanks.
- 0
- 2020-01-07
- b_dubb
-
set_role () удалит все роли и добавит указанную роль одной командой`set_role()` will remove all roles and add the specified role in one command
- 0
- 2020-04-18
- G-J
-
- 2015-06-14
Обратите внимание,что есть более простой способ изменить роль пользователя,который особенно полезен,если вы не знаете текущую роль пользователя:
->set_role()
Пример:
// 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' );
-
Помните,что set_role удалит предыдущие роли пользователя и назначит новую роль.Remember that set_role will remove the previous roles of the user and assign the new role.
- 0
- 2016-05-03
- shasi kanth
-
Это идеально подходит для пользовательских регистрационных форм.Сначала зарегистрируйте пользователей без ролей,а затем добавьте роль,когда они подтвердят электронную почту.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
Чтобы экстраполировать ответt31os,вы можете добавить что-то подобное в свой файл функций,если вы хотите сделать это программно на основе условия
$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' ); } }
-
Я думаю,что вы неправильно используете `$blogID`.[`get_users ()`] (http://codex.wordpress.org/Function_Reference/get_users) в любом случае будет использовать текущий идентификатор блога по умолчанию.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
-
да,в моем случае паста была взята только из многосайтового примера.Я также не определял его здесь,поэтому очевидно,что это вызовет ошибку.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
Вы можете изменить роль любого пользователя,отредактировав профиль пользователя.Нет необходимости добавлять код,если эта опция уже встроена в WordPress.
Или
Вы можете использовать код для изменения всех текущих пользователей с ролью подписчика на редактора:
$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
Для этого есть функция WordPress!
Я считаю,что лучше всего использовать функции WordPress,если и когда они доступны.
Вы можете использовать функцию wp_insert_user () ,где один из необходимых вам аргументовпредоставить $ userdata ['роль'].В этом аргументе вы можете указать роль,в которой хотите изменить пользователя.
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.
-
wp не распознает эту функцию.Получил ошибку "неопределенная функция".wp doesn't recognize that function. I got an "undefined function" error.
- 0
- 2010-12-01
- Joann
-
Судя по всему,wp_insert_user () делает то же самое.Когда вы предоставляете идентификатор,он обновляется.Нет ID не добавляет нового пользователя.Пока не знаю,в чем разница между wp_update_user () и 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
Вы можете использовать wp_update_user .Ваш код должен быть таким:
<?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
Я знаю,что это очень старый пост,но я обнаружил,что роли для пользователей хранятся в таблице
wp_usermeta
с ключомwp_capabilities
вmeta_key
столбец.Если вы хотите изменить роль пользователя,вы можете сделать это с помощью этой простой функции.
функция change_role ($id,$new_role) { ГЛОБАЛЬНЫЙ $table_prefix; if (is_array ($new_role)) { $new_role_array=$new_role; }else { $new_role_array=массив ($new_role=>true); } вернуть update_user_meta ($id,$table_prefix.'capabilities ',$new_role_array); }
Эту функцию можно использовать двумя способами.
Если вы хотите изменить роль для одной роли.
change_role (2,'редактор');//редактор - это новая роль
Или,если вы хотите добавить пользователю несколько ролей,используйте роли как массив во втором параметре.
$ roles_array=array ('editor'=>true,'administrator'=>true);//массив ролей change_role (2,$ roles_array);
Удачи.
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.
У меня есть настраиваемые роли в моей настройке,и я хочу иметь возможность автоматически изменять роль пользователя с помощью функции.Скажем,у пользователя A есть роль ПОДПИСЧИК,как мне изменить ее на РЕДАКТОР?При добавлении роли мы просто:
Как насчет смены роли?Есть что-то вроде:
ОБНОВЛЕНИЕ: Думаю,подойдет: