# WP_INSERT_USER() │ WP 2.0.0
Функция wp_insert_user() создает пользователя в базе данных WordPress.
**Внимание!** Не обновляйте пользователя с помощью этой функции — используйте wp_update_user().
### Почему нельзя обновлять с помощью wp_insert_user()
При использовании этой функции могут возникнуть проблемы:
- Пароль не шифруется и сохраняется в базе данных в открытом виде.
- Дата регистрации изменяется.
- Удаляется электронная почта, если она не указана.
### Важные нюансы
- Все логические значения в параметрах должны передаваться как строки: 'true' или 'false', так как именно так они записаны в мета-полях.
- Длина поля user_url ограничена 100 символами (это актуально для WP 5.8). Если вы превысите этот лимит, пользователь не будет создан, и вы не увидите никаких ошибок.
### Создание пользователя без электронной почты
Пользователь может быть создан даже без адреса электронной почты. Если вы не укажете параметр user_email, пользователь будет создан с пустым адресом электронной почты.
### Фильтры с префиксом pre_
Есть ряд фильтров, которые срабатывают перед использованием отфильтрованного значения. Все они передают значение параметров. Вот список таких фильтров:
- pre_user_login
- pre_user_nicename
- pre_user_url
- pre_user_email
- pre_user_display_name
- pre_user_nickname
- pre_user_first_name
- pre_user_last_name
- pre_user_description
### Возвращаемое значение
Функция возвращает id созданного пользователя или объект WP_Error, если пользователь не может быть создан:
- Неверный ID пользователя.
- Нельзя создать пользователя с пустым именем.
- Имя пользователя не может быть длиннее 60 символов.
- Извините, имя пользователя уже существует!
- Извините, это имя пользователя не разрешено.
- Ник не может быть длиннее 50 символов.
- Извините, этот адрес электронной почты уже используется!
### Шаблон использования
```php
$userdata = [
'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) Биографическое описание пользователя.
'rich_editing' => 'true', // (string) Включить ли режим визуального редактора для пользователя.
'syntax_highlighting' => 'true', // (string) Включить ли подсветку синтаксиса для редактора кода.
'comment_shortcuts' => 'false', // (string) Включить ли клавиатурные сокращения для модерации комментариев.
'admin_color' => 'fresh', // (string) Цветовая схема панели администратора. По умолчанию - 'fresh'.
'use_ssl' => 'false', // (string) Должен ли пользователь всегда получать доступ к админке через https.
'user_registered' => '', // (string) Дата регистрации пользователя. Формат - 'Y-m-d H:i:s'.
'show_admin_bar_front' => 'true', // (string) Показывать ли панель админа на фронте сайта.
'role' => '', // (string) Роль пользователя.
'locale' => '', // (string) Локаль пользователя.
'meta_input' => [], // (array) [ 'meta_key' => 'meta_value' ]
];
wp_insert_user( $userdata );
Пример использования
Создание пользователя на основе данных из запроса $_POST:
/**
* Регистрация нового пользователя
*/
function new_user_registration() {
// Проверим поля безопасности
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'vb_new_user' ) ) {
die( 'Попробуйте снова немного позже.' );
}
// Данные из $_POST
$userdata = [
'user_login' => $_POST['user'],
'user_pass' => $_POST['pass'],
'user_email' => $_POST['mail'],
'first_name' => $_POST['name'],
'nickname' => $_POST['nick'],
];
// WP сам будет производить проверку и очистку данных.
$user_id = wp_insert_user( $userdata );
if ( ! is_wp_error( $user_id ) ) {
return true;
} else {
return $user_id->get_error_message();
}
}
Заметки
- Глобальный:
wpdb. Объект абстракции базы данных WordPress.
Изменения
- С 2.0.0 — введено.
- С 3.6.0 — поля aim, jabber и yim были удалены из метода контакта пользователя для новых установок.
- С 4.7.0 — поле локали можно передавать через
$userdata. - С 5.3.0 — поле
user_activation_keyможно передавать через$userdata. - С 5.3.0 — поле
spamможно передавать через$userdata(только для мультисайтов). - С 5.9.0 — поле
meta_inputможно передавать через$userdataдля добавления пользовательских метаданных.