user_register
Спрацьовує одразу після того, як новий користувач був зареєстрований на сайті. Після того, як дані користувача були додані до бази даних.
Хук отримує як параметр ID користувача.
На момент спрацьовування цього хука всі метадані вже додані в БД. Пароль уже зашифровано.
Цей хук можна використовувати для додавання додаткових метаданих, переданих у формі реєстрації нового користувача.
Також можна використовувати хук для додавання або оновлення метаданих користувача insert_user_meta
. Див. приклад нижче або код функції wp_insert_user()
Використання
add_action( 'user_register', 'wp_kama_user_register_action', 10, 2); /** * Function for `user_register` action-hook. * * @param int $user_id User ID. * @param array $userdata Raw array of data passed to wp_insert_user(). * * @return void */ function wp_kama_user_register_action( $user_id, $userdata ){ // action... }
-
$user_id
(число) - ID зареєстрованого користувача.
-
$userdata
(WP 5.8) -
Необроблений масив даних, переданий у функцію
wp_insert_user() .
Приклади
#1 Додамо додаткові дані користувача під час реєстрації
Цей приклад показує, як додати значення поля user_sex
, яке передається в $_POST даних із форми реєстрації.
Майте на увазі, що перевірка даних, що оновлюються, не повинна проводитися в момент цього хука – вже занадто пізно, користувач вже доданий! Перевірку даних потрібно робити під час хука registration_errors
, хук user_register не спрацює, якщо перевірка не буде пройдена.
// Попередня перевірка поля add_filter( 'registration_errors', 'my_validate_user_data'); function my_validate_user_data( $errors ){ if( empty($_POST['user_sex']) ) $errors->add('empty_user_sex', 'Підлога обов'язково повинна бути вказана!' ); elseif( ! in_array($_POST['user_sex'], array('male','female')) ) $errors->add('invalid_user_sex', 'Підлога вказана неправильно!' ); return $errors; } // Оновлення метаданих користувача add_action( 'user_register', 'my_user_registration'); function my_user_registration( $user_id ) { // $_POST['user_sex'] перевірено заздалегідь... update_user_meta( $user_id, 'user_sex', $_POST['user_sex']); }
#2 Оновлення метаданих користувача під час реєстрації
Це аналогічний першому прикладу з використанням хука insert_user_meta для додавання метаданих користувача при реєстрації. Цей варіант кращий, тому що зручніше…
Цей приклад повністю замінює хук user_register із попереднього прикладу. Перевірку на помилки беремо з попер. приклад.
// $meta = apply_filters( 'insert_user_meta', $meta, $user, $update); add_filter( 'insert_user_meta', 'my_user_registration_meta', 10, 3); function my_user_registration_meta( $meta, $user, $update ) { // Виходимо якщо це не реєстрація користувача if( $update ) return $meta; $meta['user_sex'] = $_POST['user_sex']; // $_POST['user_sex'] перевірено заздалегідь... return $meta; }
список змін
З версії 1.5.0 | Введено. |
З версії 5.8.0 | The $userdata parameter був added. |
Де викликається хук
do_action( 'user_register', $user_id, $userdata );
Де використовується хук у WordPress
add_action( 'user_register', array( 'WP_Internal_Pointers', 'dismiss_pointers_for_new_users' ) );
add_action( $action, 'wp_maybe_update_user_counts', 10, 0);