В случае успеха функция возвращает ID созданного/обновлённого пользователя, в случае неудачи – объект WP_Error. Некоторые из таких ситуаций:
illegal_user_logins
(пример). По умолчанию разрешено всё.spam
, а у вас обычная установка, а не мультисайт!$userdata
.Давайте начну с примера.
$new_user_id = wp_insert_user( array( 'user_login' => 'mishanew', 'user_email' => 'misha@misha.blog', 'user_pass' => '12345', // только вы так не делайте, прошу! 'role' => 'administrator', ) ); if( ! is_wp_error( $new_user_id ) ) { // если не ошибка // потом например вы можете добавить немного метаданных update_user_meta( $new_user_id, 'first_name', 'Misha' ); }
Ну что, теперь давайте разберёмся в параметрах функции.
wp_insert_user( $userdata )
wp_generate_password()
misha@misha.blog
, то получится mishamisha-blog
.true
– включено.true
– включено.false
– нет. Подробнее об этом.fresh
(стандартная). Существуют значения light
– Светлая, blue
– Синяя, coffee
– Кофе, ectoplasm
– Эктоплазма, midnight
– Полночь, ocean
– Океан, sunrise
– Рассвет.true
, чтобы обязать пользователя логиниться через SSL (https://).Y-m-d H:i:s
. По умолчанию – текущая GMT дата.true
– показывать.get_option('default_role')
true
, чтобы отметить пользователя как спам.Если вы перейдёте в Пользователи > Ваш профиль, вы увидите, что практически все перечисленные параметры представлены там в виде полей/чекбоксов.
Большинство из передаваемых в функцию параметров пользователя можно отфильтровать перед их использованием. Вот полный список:
pre_user_login
pre_user_email
pre_user_display_name
pre_user_nicename
pre_user_nickname
pre_user_url
pre_user_first_name
pre_user_last_name
pre_user_description
К примеру вы хотите добавлять перед логином пользователя последовательность из случайных букв, тогда ваш хук будет выглядеть так:
add_filter( 'pre_user_login', function( $user_login ) { return substr( str_shuffle( "abcdefghijklmnopqrstuvwxyz" ), 0, 4 ) . '_' . $user_login; });
При помощи этого хука можно задать определённые имена пользователей, которые вы бы хотели запретить для регистрации, пример:
add_filter( 'illegal_user_logins', function( $illegal_logins ) { return array( 'Loh', 'administrator', 'admin' ); } );
Хук wp_pre_insert_user_data
позволяет отфильтровать основные параметры пользователя, которые отправляются в таблицу wp_users
, я говорю о: логин, пароль, емайл, урл, дата регистрации, ярлык, отображаемое имя.
Чтобы не напрягать правое полушарие, покажу тот же самый пример, что был тут на примере pre_user_login
.
// $update – если true, то обновление, false – создание нового // $user_id – думаю не нужно вам объяснять, в каких случаях он равен null add_filter( 'wp_pre_insert_user_data', function( $userdata, $update, $user_id ) { $userdata[ 'user_login' ] = substr( str_shuffle( "abcdefghijklmnopqrstuvwxyz" ), 0, 4 ) . '_' . $userdata[ 'user_login' ]; return $userdata; }, 10, 3 );
Обратите внимание, что при создании пользователя функцией wp_insert_user() часть данных записывается в обычную таблицу пользователей в базе данных wp_users
, а часть в мета wp_usermeta
.
И хук insert_user_meta
позволяет перед записью метаданных в базу данных, что-нибудь с ними провернуть. Предположим, вы хотите зафорсить пользователей всегда использовать Светлую цветовую схему. И это блин возможно с помощью хука insert_user_meta
и совершенно бесплатно! 😁
// $user – объект пользователя WP_User // $update – если true, то обновление, false – создание нового add_filter( 'insert_user_meta', function( $meta, $user, $update ) { $meta['admin_color'] = 'light'; return $meta; } );
Запускается тогда, когда мы обновляем существующего пользователя, то есть когда передан параметр ID
в функцию.
add_action( 'profile_update', function( $user_id, $old_user_data ) { // делаем что-то }, 10, 2 );
В противоположность предыдущему хуку – срабатывает когда мы именно регистрируем нового пользователя, а не обновляем существующего
add_action( 'user_register', function( $user_id ) { // делаем что-то } );
Хуки противоположны друг другу, первый запускается, если параметр spam
отмечен как true, второй – если пользователь ветчина во всех остальных случаях.
Срабатывают сразу после хука profile_update
, только при обновлении пользователей.
add_action( 'make_spam_user', function( $user_id ) { // делаем что-либо });
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.