Функция wp_update_user()
в WordPress предназначена для обновления данных о пользователях в базе данных. Она позволяет вносить изменения в различные поля, такие как адрес электронной почты, пароль и другие метаданные пользователя.
wp_update_user( array|object|WP_User $userdata ): int|WP_Error
Параметры
$userdata
(array|object|WP_User): Обязательный параметр. Массив данных о пользователе или объект типаstdClass
илиWP_User
, содержащий данные для обновления.
Возвращаемое значение
int
: Возвращает ID обновленного пользователя.WP_Error
: Возвращает объектWP_Error
, если пользователь не был обновлен.
Основные возможности
- Функция позволяет обновлять различные поля пользователя, включая
user_pass
,user_email
,display_name
и другие. - При обновлении пароля текущего пользователя куки будут сброшены.
- Если пароль обновляется, будет отправлено уведомление по электронной почте.
- Функция не может обновлять поле
user_login
, так как WordPress не позволяет изменять логин пользователя.
Пример 1: Обновление профиля пользователя
В этом примере мы обновим поле профиля пользователя (например, веб-сайт):
$user_id = 6;
$website = 'http://example.com';
$user_data = wp_update_user(array('ID' => $user_id, 'user_url' => $website));
if (is_wp_error($user_data)) {
// Произошла ошибка; возможно, такого пользователя не существует.
echo 'Error.';
} else {
// Успех!
echo 'User profile updated.';
}
Пример 2: Обновление метаданных пользователя
Вы также можете обновить метаданные пользователя. В этом примере мы обновим пользовательское поле free_offers_left
с использованием объекта WP_User
:
$user = wp_get_current_user();
$free_offers = $user->free_offers_left;
update_user_meta($user->ID, 'wpdocs_free_offers_left', $free_offers--);
$update = wp_update_user($user);
if (is_int($update)) {
// Успех
echo "Update done";
} else { // is WP_error
echo "Update failed";
}
Базовые поля, которые можно обновить
В функции wp_update_user()
можно обновлять следующие поля:
$userdata = [
'ID' => 1, // ID пользователя
'user_pass' => '', // Новый пароль
'user_nicename' => '', // Никнейм пользователя
'user_url' => '', // URL пользователя
'user_email' => '', // Адрес электронной почты
'display_name' => '', // Отображаемое имя
'nickname' => '', // Никнейм
'first_name' => '', // Имя
'last_name' => '', // Фамилия
'description' => '', // Описание
'rich_editing' => true, // Включить визуальный редактор для пользователя (false - отключить)
'user_registered' => '', // Дата регистрации (Y-m-d H:i:s)
'role' => '', // Роль пользователя
];
Пример 3: Обновление информации у нескольких пользователей
В этом примере мы получаем пользователей с ролью project_manager
и обновляем их поле display_name
на основе имени и фамилии:
$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()
является мощным инструментом для управления данными пользователей в WordPress. Она позволяет гибко обновлять различные поля и отправлять уведомления, что делает её полезной для администраторов и разработчиков, работающих с пользовательскими данными. Используйте её с учетом ограничений и особенностей, указанных в этой статье.