Обновление данных пользователя в WordPress │ WP 2.0.0

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *