# Функция register_new_user() в WordPress
Функция register_new_user() предназначена для регистрации нового пользователя в WordPress. Эта функция позволяет создать нового пользователя, проверяя данные, которые были введены.
## Используемые функции
Функция register_new_user() основывается на других функциях, таких как:
- wp_create_user()
## Хуки, используемые в функции
- user_registration_email
- illegal_user_logins
- register_post
- registration_errors
- register_new_user
## Возвращаемое значение
Функция возвращает либо ID пользователя, либо ошибку в случае неудачи.
## Как использовать
### Синтаксис
```php
register_new_user( $user_login, $user_email );
$user_login(строка, обязательный) — имя пользователя для входа.$user_email(строка, обязательный) — адрес электронной почты для отправки пароля и подтверждения регистрации.
Примеры использования
Пример 1: Регистрация пользователя из формы
$user_login = isset( $_POST['user_login'] ) ? $_POST['user_login'] : '';
$user_email = isset( $_POST['user_email'] ) ? $_POST['user_email'] : '';
$user_id = register_new_user( $user_login, $user_email );
if ( ! is_wp_error( $user_id ) ) {
$redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered';
wp_safe_redirect( $redirect_to );
}
Пример 2: Создание пользователя с именем "test" и e-mail
register_new_user( 'test', 'test@example.com' );
Код функции register_new_user()
Вот пример реализации функции:
function register_new_user( $user_login, $user_email ) {
$errors = new WP_Error();
$sanitized_user_login = sanitize_user( $user_login );
// Фильтруем адрес электронной почты пользователя.
$user_email = apply_filters( 'user_registration_email', $user_email );
// Проверка имени пользователя.
if ( '' === $sanitized_user_login ) {
$errors->add( 'empty_username', __( 'Ошибка: Пожалуйста, введите имя пользователя.' ) );
} elseif ( ! validate_username( $user_login ) ) {
$errors->add( 'invalid_username', __( 'Ошибка: Это имя пользователя недопустимо, так как содержит недопустимые символы. Пожалуйста, введите корректное имя пользователя.' ) );
$sanitized_user_login = '';
} elseif ( username_exists( $sanitized_user_login ) ) {
$errors->add( 'username_exists', __( 'Ошибка: Это имя пользователя уже зарегистрировано. Пожалуйста, вы��ерите другое.' ) );
} else {
$illegal_user_logins = (array) apply_filters( 'illegal_user_logins', array() );
if ( in_array( strtolower( $sanitized_user_login ), array_map( 'strtolower', $illegal_user_logins ), true ) ) {
$errors->add( 'invalid_username', __( 'Ошибка: Извините, это имя пользователя недопустимо.' ) );
}
}
// Проверка адреса электронной почты.
if ( '' === $user_email ) {
$errors->add( 'empty_email', __( 'Ошибка: Пожалуйста, введите адрес электронной почты.' ) );
} elseif ( ! is_email( $user_email ) ) {
$errors->add( 'invalid_email', __( 'Ошибка: Адрес электронной почты неверен.' ) );
$user_email = '';
} elseif ( email_exists( $user_email ) ) {
$errors->add(
'email_exists',
sprintf(
__( 'Ошибка: Этот адрес электронной почты уже зарегистрирован. Войдите с этим адресом или выберите другой.' ),
wp_login_url()
)
);
}
// Определяем ошибки и заканчиваем регистрацию, если они есть.
$errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email );
if ( $errors->has_errors() ) {
return $errors;
}
$user_pass = wp_generate_password( 12, false );
$user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email );
if ( ! $user_id || is_wp_error( $user_id ) ) {
$errors->add(
'registerfail',
sprintf(
__( 'Ошибка: Не удалось зарегистрироваться... пожалуйста, свяжитесь с администратором сайта!' ),
get_option( 'admin_email' )
)
);
return $errors;
}
update_user_meta( $user_id, 'default_password_nag', true ); // Уведомление о смене пароля.
if ( ! empty( $_COOKIE['wp_lang'] ) ) {
$wp_lang = sanitize_text_field( $_COOKIE['wp_lang'] );
if ( in_array( $wp_lang, get_available_languages(), true ) ) {
update_user_meta( $user_id, 'locale', $wp_lang ); // Установить язык пользователя, если он задан при регистрации.
}
}
do_action( 'register_new_user', $user_id );
return $user_id;
}
Связанные функции
В WordPress также есть другие функции для работы с пользователями, такие как:
wp_get_session_token()wp_lostpassword_url()wp_new_user_notification()wp_delete_user()wp_insert_user()wp_update_user()
Эти функции помогут вам управлять пользователями на вашем сайте.