WP_UPDATE_USER() │ WP 2.0.0
Функция wp_update_user()
используется для обновления данных пользователя в базе данных. Она работает с двумя таблицами: wp_usermeta
и wp_users
.
Если вы обновите пароль текущего пользователя, он будет обработан функцией wp_hash_password()
, а куки будут очищены.
Чтобы создать нового пользователя, используйте функции wp_create_user()
или register_new_user()
.
Важно: с версии WP 3.6 функция wp_update_user()
не позволяет создавать новых пользователей.
Использование функции:
Вызов функции выглядит следующим образом:
$user_id = wp_update_user( $userdata );
Параметры:
- $userdata (array|object|WP_User) (обязательный) — массив данных о пользователе или объект пользователя.
Возвращаемое значение:
Функция возвращает:
Int|WP_Error
: ID обновленного пользователя или объект типаWP_Error
, если пользователя не удалось обновить.
Примеры использования:
Пример 1: Обновление поля сайта для пользователя с ID 1
$user_id = 1;
$website = 'http://wordpress.org';
$user_id = wp_update_user( [
'ID' => $user_id,
'user_url' => $website
] );
if ( is_wp_error( $user_id ) ) {
// Произошла ошибка, возможно такого пользователя не существует.
} else {
// Все ОК!
}
Пример 2: Обновление данных пользователей с ролью "project_manager"
$users = get_users( [
'role' => 'project_manager',
] );
foreach ( $users as $user ) {
$fio = trim( "$user->first_name $user->last_name" );
if ( $fio ) {
$user->data->display_name = $fio;
wp_update_user( $user );
}
}
Примечания
- Функция
wp_update_user()
не может обновлять имя пользователя (логин), так же, как и в админ-панели.
Основные поля, которые можно обновить с помощью этой функции:
$userdata = [
'ID' => 1,
'user_pass' => '', // Новый пароль
'user_login' => '', // Логин
'user_nicename' => '', // "Никнейм"
'user_url' => '', // URL сайта
'user_email' => '', // Email
'display_name' => '', // Имя для отображения
'nickname' => '', // Псевдоним
'first_name' => '', // Имя
'last_name' => '', // Фамилия
'description' => '', // Описание профиля
'rich_editing' => true, // Включить визуальный редактор
'user_registered' => '', // Дата регистрации (Y-m-d H:i:s)
'role' => '', // Роль пользователя
];
Подсказки
- Для получения информации о полях, которые могут быть установлены в
$userdata
, посмотрите в функциюwp_insert_user()
.
Изменения
- Впервые введено в версии 2.0.0.
Код функции
Вот код функции wp_update_user()
:
function wp_update_user( $userdata ) {
if ( $userdata instanceof stdClass ) {
$userdata = get_object_vars( $userdata );
} elseif ( $userdata instanceof WP_User ) {
$userdata = $userdata->to_array();
}
$userdata_raw = $userdata;
$user_id = isset( $userdata['ID'] ) ? (int) $userdata['ID'] : 0;
if ( ! $user_id ) {
return new WP_Error( 'invalid_user_id', __( 'Invalid user ID.' ) );
}
// Получаем все оригинальные данные пользователя.
$user_obj = get_userdata( $user_id );
if ( ! $user_obj ) {
return new WP_Error( 'invalid_user_id', __( 'Invalid user ID.' ) );
}
$user = $user_obj->to_array();
// Добавляем дополнительные поля.
foreach ( _get_additional_user_keys( $user_obj ) as $key ) {
$user[ $key ] = get_user_meta( $user_id, $key, true );
}
// Экранируем данные, полученные из БД.
$user = add_magic_quotes( $user );
if ( ! empty( $userdata['user_pass'] ) && $userdata['user_pass'] !== $user_obj->user_pass ) {
// Если пароль меняется, хешируем его.
$plaintext_pass = $userdata['user_pass'];
$userdata['user_pass'] = wp_hash_password( $userdata['user_pass'] );
}
// Сбрасываем кэш пользователя.
clean_user_cache( $user_obj );
// Объединяем старые и новые поля, заменяя старые новыми.
$userdata = array_merge( $user, $userdata );
$user_id = wp_insert_user( $userdata );
if ( is_wp_error( $user_id ) ) {
return $user_id;
}
return $user_id;
}
Теперь у вас есть структура и основные элементы, необходимые для работы с функцией wp_update_user()
. Помните, что эта функция полезна для управления данными пользователей в WordPress.