Функция wp_insert_user()
используется для создания нового пользователя в базе данных WordPress. Она принимает массив, объект или объект класса WP_User
, содержащий данные о пользователе. Если указать ID пользователя, то данные существующего пользователя будут обновлены.
wp_insert_user( array|object|WP_User $userdata ): int|WP_Error
Параметры
- $userdata (array|object|WP_User, обязательный) — Массив, объект или объект класса
WP_User
, содержащий данные пользователя.
Ключевые поля массива $userdata
:
- ID (int) — ID пользователя. Если указан, данные будут обновлены для существующего пользователя.
- user_pass (string, обязательный) — Пароль пользователя (в виде текста).
- user_login (string, обязательный) — Логин пользователя.
- user_nicename (string) — URL-дружественное имя пользователя.
- user_url (string) — URL веб-сайта пользователя.
- user_email (string) — Адрес электронной почты.
- display_name (string) — Отображаемое имя пользователя. По умолчанию — имя пользователя.
- nickname (string) — Псевдоним пользователя.
- first_name (string) — Имя пользователя.
- last_name (string) — Фамилия пользователя.
- description (string) — Биографическое описание пользователя.
- role (string) — Роль пользователя (например, ‘administrator’, ‘editor’, ‘subscriber’).
Возвращает
- int — ID созданного или обновленного пользователя.
- WP_Error — Объект с ошибками, если операция завершилась неудачно.
Пример 1: Создание нового пользователя
$userdata = array(
'user_login' => 'new_user', // Логин пользователя
'user_pass' => 'password123', // Пароль
'user_email' => '[email protected]', // Email
'first_name' => 'John', // Имя
'last_name' => 'Doe', // Фамилия
'role' => 'subscriber', // Роль
);
$user_id = wp_insert_user( $userdata );
if ( ! is_wp_error( $user_id ) ) {
echo "Пользователь создан: " . $user_id;
} else {
echo "Ошибка: " . $user_id->get_error_message();
}
Пример 2: Обновление существующего пользователя
$userdata = array(
'ID' => 5, // ID пользователя для обновления
'user_login' => 'updated_user', // Новый логин
'user_pass' => 'newpassword456' // Новый пароль
);
$user_id = wp_insert_user( $userdata );
if ( ! is_wp_error( $user_id ) ) {
echo "Пользователь обновлен: " . $user_id;
} else {
echo "Ошибка: " . $user_id->get_error_message();
}
Пример 3: Создание пользователя без email
$userdata = array(
'user_login' => 'no_email_user',
'user_pass' => wp_generate_password(), // Генерируем пароль автоматически
'nickname' => 'NoEmailNick'
);
$user_id = wp_insert_user( $userdata );
if ( ! is_wp_error( $user_id ) ) {
echo "Пользователь создан без email: " . $user_id;
} else {
echo "Ошибка: " . $user_id->get_error_message();
}
Пример 4: Обработка ошибок
$userdata = array(
'user_login' => 'test_user',
'user_email' => '[email protected]'
);
$user_id = wp_insert_user( $userdata );
if ( is_wp_error( $user_id ) ) {
$error_message = $user_id->get_error_message();
echo "Ошибка создания пользователя: $error_message";
} else {
echo "Пользователь успешно создан: $user_id";
}
Важные замечания
- Параметр
user_login
не может быть пустым — если не указать логин, WordPress вернёт ошибку. - Пароль должен быть в текстовом виде — хэширование произойдет автоматически внутри функции.
- Обновление существующего пользователя — Если указан параметр
ID
, WordPress обновит данные пользователя. - Использование фильтров — WordPress использует фильтры с префиксом
pre_user_
, которые могут изменять значения полей перед сохранением.
Заключение
Функция wp_insert_user()
является удобным инструментом для создания и обновления пользователей в WordPress. С её помощью можно гибко задавать все основные параметры пользователя, а также работать с метаданными.