- Пользователи в WordPress (часть 1)
- Обновление или добавление пользователя «wp_insert_user»
- wp_create_user() │ WP 2.0.0
- Возвращает
- Использование
- Примеры
- #1 Пример создания нового пользователя.
- Заметки
- Список изменений
- Код wp_create_user() wp create user WP 6.2.2
- Cвязанные функции
- Пользователи (_user)
- Добавление/удаление юзеров
- register_new_user() │ WP 2.5.0
- Возвращает
- Использование
- Примеры
- #1 Упрощенный пример использования из wp-login.php
- #2 Создаем пользователя с логином test и почтой **test@example.com
- Список изменений
- Код register_new_user() register new user WP 6.2.2
- Cвязанные функции
- Добавление/удаление юзеров
Пользователи в WordPress (часть 1)
Первый аргумент «$login» (является строкой) — это логин пользователя. Второй параметр «$pass» является паролем, а третий «$email» — это почтовый адрес пользователя. Все аргументы кроме «$email» являются обязательными для создания пользователя.
- empty_user_login — не указан логин нового пользователя
- existing_user_login — пользователь с таким логином уже существует
- existing_user_email — пользователь с таким почтовым адресом уже сущесвтует
$user_id = wp_create_user( 'mouse', 'cheese', 'support@mousedc.ru' ); if( !is_wp_error( $user_id ) ) < echo 'Пользователь успешно создан. Его ID' =>1, // ID пользователя, данные которого обновляются. 'first_name' => 'Имя', 'last_name' => 'Фамилия' ); $user_id = wp_update_user( $data ); if( !is_wp_error( $user_id ) ) < echo 'Данные пользователя c успешно изменены.'; >else < echo $user_id->get_error_message(); >
Разберём все возможные ключи массива первого аргумента:
Название | тип | описание |
---|---|---|
ID | число | ID пользователя. |
user_pass | строка | Пароль пользователя. |
user_login | строка | Логин пользователя. |
user_nicename | строка | Имя пользователя. Совпадает с логином, если не указано. |
user_url | строка | Адрес сайта |
user_email | строка | Почтовый адрес (мэйл). |
display_name | строка | Отображаемое имя. Совпадает с логином, если не указано. |
nickname | строка | Ник. Совпадает с логином, если не указано. |
first_name | строка | Имя. |
last_name | строка | Фамилия. |
description | строка | Поле «немного о себе». |
rich_editing | строка/ логический | Использовать ли визуальный редактор. По умолчанию «true» — использовать |
syntax_highlighting | строка/ логический | Включить ли подсветку синтаксиса для визуального редактора. |
comment_shortcuts | строка/ логический | Использовать ли клавиши модерации комментариев. По умолчанию «false» — отключено |
admin_color | строка | Особый цвет панели администрирования. По умолчанию: «fresh» |
use_ssl | строка/ логический | Заставлять ли пользователя использовать только защищённое соединение при авторизации (https). По умолчанию «false» — не заставлять |
user_registered | строка | Дата регистрации в формате «Y-m-d H:i:s». Если не указать, то будет использована текущая дата (по Гринвичу). |
show_admin_bar_front | строка | Показывать ли бар администратора (полоска сверху). По умолчанию «true» — показывать |
role | строка | Роль пользователя. |
locale | строка | Язык пользователя. К примеру: «ru_RU». По умолчанию пустое значение |
Обновление или добавление пользователя «wp_insert_user»
Функция «wp_insert_user» умеет и добавлять, и обновлять данные пользователей. Она принимает только один аргумент — массив параметров, которые нужно обновить (см. таблицу из предыдущего абзаца):
Если в массиве «$data» передать ключ «ID», то пользователь будет обновлён. Если не передать, то будет создан новый пользователь. В случае успешного обновления или добавления пользователя функция возвращает ID. Если в процессе работы функции произошла ошибка, то вернётся объект «WP_Error».
wp_create_user() │ WP 2.0.0
Регистрирует нового пользователя. Указываются логин (имя), пароль и email. Все что делает функция — это добавляет слэши в логин/email и вызывает wp_insert_user() .
Используйте аналогичную функцию: wp_insert_user(), когда нужно указать дополнительные параметры: роль, метаполя и т.д.
Возвращает
- empty_user_login — невозможно создать пользователя, потому что логин не указан (пуст).
- existing_user_login — такой пользователь уже зарегистрирован.
- existing_user_email — такой email уже существует.
Использование
$user_id = wp_create_user( $username, $password, $email );
$username(строка) (обязательный) Имя создаваемого пользователя (логин). $password(строка) (обязательный) Пароль создаваемого пользователя. $email(строка) E-mail создаваемого пользователя.
По умолчанию: »
Примеры
#1 Пример создания нового пользователя.
Если WordPress не сможет создать пользователя, то он вернет объект ошибки, выведем в этом случае сообщение из этого объекта:
$random_password = wp_generate_password( 12 ); $user_id = wp_create_user( $user_name, $random_password, $user_email ); if ( is_wp_error( $user_id ) ) < echo $user_id->get_error_message(); > else
Заметки
Список изменений
Код wp_create_user() wp create user WP 6.2.2
function wp_create_user( $username, $password, $email = » )
Cвязанные функции
Пользователи (_user)
- clean_user_cache()
- current_user_can()
- delete_user_option()
- get_current_user_id()
- get_edit_user_link()
- get_user_by()
- get_user_option()
- get_userdata()
- get_users()
- is_user_logged_in()
- wp_get_current_user()
- wp_insert_user()
- wp_list_users()
- wp_set_current_user()
- wp_update_user()
- WP_User()
Добавление/удаление юзеров
Кама, привет, зашел к тебе в надежде найти решение, как сделать регистрацию и авторизацию через телефон, вприципе все инструменты есть, вопрос один остался, как сделать создание пользователя без указание
$user_id = wp_create_user( $user_name, $random_password);
Вот, только что описал функцию, там все это можно сделать. Просто можно мыло не указывать: только логин и пасс. wp_insert_user П.С. Пример рабочий потом скинь сюда, добавлю в статью, в примеры.
судя из практики с этой функцией, в поле «email» можно подсовывать к примеру тоже имя, оно потом проверяется видимо на соответствие шаблона @.** и при не удаче регает с пустым email. Ну в вордпрессе во всяком случае в админке пользователи новые есть, а их графа email — пустая .
if (isset($_POST['goo'])) < $login = $_POST['login']; $pass = $_POST['password']; $mail = $_POST['email']; $user = wp_create_user($login, $pass, $mail); if ( is_wp_error($user) ) echo $user->get_error_message(); >
У меня такой вопрос, делаю личный кабинет, хочу все сделать из под коробки. И вот встал такой вопрос. Сначала регистрируется компания, потом она добавляет своих пользователей. Соответственно и компания и ее сотрудники видят только свои типы записей. Как можно такой функционал реализовать?
Нет, это низкоуровневое создание пользователя. Письмо будет оправлено автоматически если использовать register_new_user(), которая среди прочих использует и эту функцию. В частности, это собитие висит на хуке
add_action( 'register_new_user', 'wp_send_new_user_notifications' );
Как реализовать возможность использования кириллицы в Username при использовании функции WP wp_create_user(). Сразу отмечу, что плагин Allow Cyrillic Usernames не помогает при регистрации пользователей через эту функцию. То есть, плагин помогает, и ошибки не возникает, но пользователь не регистрируется, а функция возвращает не ошибку, а 0, как id пользователя.
Любой дурак напишет код, который поймет машина. Хорошие программисты пишут понятно для человека. © Martin Fowler
register_new_user() │ WP 2.5.0
Регистрирует нового пользователя. Указываются только логин и email. Проверяет переданные параметры, генерирует пароль и вызывает функцию wp_create_user() .
На хуке register_new_user отправляет пользователю email об успешной регистрации. Если такое уведомление не требуется, для создания пользователей используйте функции wp_create_user() или wp_insert_user().
Хуки из функции
Возвращает
Использование
register_new_user( $user_login, $user_email );
$user_login(строка) (обязательный) Логин пользователя, в дальнейшем будет использоваться для входа через форму авторизации. $user_email(строка) (обязательный) Email пользователя. На него, после завершения регистрации, пользователь получит письмо о регистрации с логином и паролем для входа.
Примеры
#1 Упрощенный пример использования из wp-login.php
$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) )
#2 Создаем пользователя с логином test и почтой **test@example.com
register_new_user( 'test', 'test@example.com' );
Список изменений
Код register_new_user() register new user WP 6.2.2
function register_new_user( $user_login, $user_email ) < $errors = new WP_Error(); $sanitized_user_login = sanitize_user( $user_login ); /** * Filters the email address of a user being registered. * * @since 2.1.0 * * @param string $user_email The email address of the new user. */ $user_email = apply_filters( 'user_registration_email', $user_email ); // Check the username. if ( '' === $sanitized_user_login ) < $errors->add( 'empty_username', __( 'Error: Please enter a username.' ) ); > elseif ( ! validate_username( $user_login ) ) < $errors->add( 'invalid_username', __( 'Error: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); $sanitized_user_login = ''; > elseif ( username_exists( $sanitized_user_login ) ) < $errors->add( 'username_exists', __( 'Error: This username is already registered. Please choose another one.' ) ); > else < /** This filter is documented in wp-includes/user.php */ $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', __( 'Error: Sorry, that username is not allowed.' ) ); > > // Check the email address. if ( '' === $user_email ) < $errors->add( 'empty_email', __( 'Error: Please type your email address.' ) ); > elseif ( ! is_email( $user_email ) ) < $errors->add( 'invalid_email', __( 'Error: The email address is not correct.' ) ); $user_email = ''; > elseif ( email_exists( $user_email ) ) < $errors->add( 'email_exists', sprintf( /* translators: %s: Link to the login page. */ __( 'Error: This email address is already registered. Log in with this address or choose another one.' ), wp_login_url() ) ); > /** * Fires when submitting registration form data, before the user is created. * * @since 2.1.0 * * @param string $sanitized_user_login The submitted username after being sanitized. * @param string $user_email The submitted email. * @param WP_Error $errors Contains any errors with submitted username and email, * e.g., an empty field, an invalid username or email, * or an existing username or email. */ do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); /** * Filters the errors encountered when a new user is being registered. * * The filtered WP_Error object may, for example, contain errors for an invalid * or existing username or email address. A WP_Error object should always be returned, * but may or may not contain errors. * * If any errors are present in $errors, this will abort the user's registration. * * @since 2.1.0 * * @param WP_Error $errors A WP_Error object containing any errors encountered * during registration. * @param string $sanitized_user_login User's username after it has been sanitized. * @param string $user_email User's email. */ $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( /* translators: %s: Admin email address. */ __( 'Error: Could not register you… please contact the site admin!' ), get_option( 'admin_email' ) ) ); return $errors; > update_user_meta( $user_id, 'default_password_nag', true ); // Set up the password change nag. 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 ); // Set user locale if defined on registration. >> /** * Fires after a new user registration has been recorded. * * @since 4.4.0 * * @param int $user_id ID of the newly registered user. */ do_action( 'register_new_user', $user_id ); return $user_id; >