wp_update_user

Срабатывает после обновления пользователя и отправки писем
Хук WordPress
INT 6.3.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Изменение роли пользователя после обновления
  4. Отправка уведомления после обновления пользователя
  5. Добавление пользовательского метаполя после обновления
  6. Обновление пользовательской информации во внешней системе
  7. Вопросы и ответы
  8. Как получить ID пользователя, который был только что обновлен?
  9. Как получить массив обновленных данных пользователя?
  10. Как получить неизмененный массив данных пользователя?
  11. Как изменить данные пользователя после их обновления?
  12. Как отключить отправку электронной почты после обновления пользователя?
  13. Как изменить содержимое электронной почты, отправляемой после обновления пользователя?
  14. Как добавить дополнительные поля в массив данных пользователя перед обновлением?
  15. Как проверить, был ли пользователь только что обновлен?
  16. Как выполнить дополнительные действия после обновления пользователя?
  17. Связанные элементы

Описание хука

Хук «wp_update_user» срабатывает после обновления данных пользователя и отправки электронных писем. Он позволяет определить дополнительные действия после обновления пользователя, такие как изменение данных пользователя, отправка уведомлений или выполнение других пользовательских операций.

Использование

do_action( 'wp_update_user', int $user_id, array $userdata, array $userdata_raw )

Где:

  • $user_id (int) — ID пользователя, который был только что обновлен.
  • $userdata (array) — Массив данных пользователя, который был обновлен.
  • $userdata_raw (array) — Неотредактированный массив данных пользователя, который был обновлен.
<?php
/**
 * Обновление данных пользователя.
 *
 * @param int    $user_id       ID пользователя.
 * @param array  $userdata     Массив данных пользователя.
 * @param array  $userdata_raw Неотредактированный массив данных пользователя.
 */
function wpdocs_wp_update_user_example( $user_id, $userdata, $userdata_raw ) {
    // Ваш код обработки после обновления пользователя.
}
add_action( 'wp_update_user', 'wpdocs_wp_update_user_example', 10, 3 );
?>

В приведенном выше примере кода мы определяем функцию wpdocs_wp_update_user_example, которая будет вызываться после обновления пользователя. Функция принимает три параметра: $user_id, $userdata и $userdata_raw. Вы можете использовать эти параметры для выполнения дополнительных действий после обновления пользователя, например, отправки уведомлений или изменения данных пользователя.

Примеры использования

Изменение роли пользователя после обновления


function change_user_role_after_update( $user_id, $userdata, $userdata_raw ) {
    // Check if the user role has been updated
    if ( isset( $userdata['role'] ) && $userdata['role'] !== $userdata_raw['role'] ) {
        // Update the user role
        $user = new WP_User( $user_id );
        $user->set_role( $userdata['role'] );
    }
}
add_action( 'wp_update_user', 'change_user_role_after_update', 10, 3 );

В этом примере мы используем хук wp_update_user для изменения роли пользователя после его обновления. Функция change_user_role_after_update принимает три параметра: $user_id — идентификатор пользователя, $userdata — массив данных пользователя, который был обновлен, и $userdata_raw — неизмененный массив данных пользователя.

Внутри функции мы проверяем, была ли обновлена роль пользователя, сравнивая значение $userdata['role'] с $userdata_raw['role']. Если роль была изменена, мы создаем экземпляр класса WP_User с помощью идентификатора пользователя и обновляем его роль с помощью метода set_role().

Отправка уведомления после обновления пользователя


function send_user_update_notification( $user_id, $userdata, $userdata_raw ) {
    // Check if the user email has been updated
    if ( isset( $userdata['user_email'] ) && $userdata['user_email'] !== $userdata_raw['user_email'] ) {
        // Send notification email
        wp_mail( $userdata['user_email'], 'User Updated', 'Your user account has been updated.' );
    }
}
add_action( 'wp_update_user', 'send_user_update_notification', 10, 3 );

В этом примере мы используем хук wp_update_user для отправки уведомления пользователю после обновления его данных. Функция send_user_update_notification принимает три параметра: $user_id — идентификатор пользователя, $userdata — массив данных пользователя, который был обновлен, и $userdata_raw — неизмененный массив данных пользователя.

Внутри функции мы проверяем, был ли обновлен адрес электронной почты пользователя, сравнивая значение $userdata['user_email'] с $userdata_raw['user_email']. Если адрес электронной почты был изменен, мы используем функцию wp_mail() для отправки уведомления на новый адрес электронной почты пользователя.

Добавление пользовательского метаполя после обновления


function add_user_meta_after_update( $user_id, $userdata, $userdata_raw ) {
    // Check if the user meta field has been updated
    if ( isset( $userdata['my_custom_field'] ) && $userdata['my_custom_field'] !== $userdata_raw['my_custom_field'] ) {
        // Add user meta
        update_user_meta( $user_id, 'my_custom_field', $userdata['my_custom_field'] );
    }
}
add_action( 'wp_update_user', 'add_user_meta_after_update', 10, 3 );

В этом примере мы используем хук wp_update_user для добавления пользовательского метаполя после обновления данных пользователя. Функция add_user_meta_after_update принимает три параметра: $user_id — идентификатор пользователя, $userdata — массив данных пользователя, который был обновлен, и $userdata_raw — неизмененный массив данных пользователя.

Внутри функции мы проверяем, было ли обновлено пользовательское метаполе, сравнивая значение $userdata['my_custom_field'] с $userdata_raw['my_custom_field']. Если метаполе было изменено, мы используем функцию update_user_meta() для добавления или обновления значения метаполя для пользователя.

Обновление пользовательской информации во внешней системе


function update_external_system_after_user_update( $user_id, $userdata, $userdata_raw ) {
    // Check if the user name has been updated
    if ( isset( $userdata['user_login'] ) && $userdata['user_login'] !== $userdata_raw['user_login'] ) {
        // Update user information in external system
        $external_system = new ExternalSystem();
        $external_system->update_user( $user_id, $userdata['user_login'] );
    }
}
add_action( 'wp_update_user', 'update_external_system_after_user_update', 10, 3 );

В этом примере мы используем хук wp_update_user для обновления пользовательской информации во внешней системе после обновления данных пользователя. Функция update_external_system_after_user_update принимает три параметра: $user_id — идентификатор пользователя, $userdata — массив данных пользователя, который был обновлен, и $userdata_raw — неизмененный массив данных пользователя.

Внутри функции мы проверяем, было ли обновлено имя пользователя, сравнивая значение $userdata['user_login'] с $userdata_raw['user_login']. Если имя пользователя было изменено, мы создаем экземпляр класса ExternalSystem и вызываем его метод update_user() для обновления информации о пользователе во внешней системе.

Вопросы и ответы

Как получить ID пользователя, который был только что обновлен?

Для получения ID пользователя, который был только что обновлен, можно использовать хук wp_update_user. В этом хуке передается параметр $user_id, который содержит ID обновленного пользователя.


function my_update_user_callback( $user_id, $userdata, $userdata_raw ) {
    // Получаем ID пользователя
    $updated_user_id = $user_id;
}
add_action( 'wp_update_user', 'my_update_user_callback', 10, 3 );

Как получить массив обновленных данных пользователя?

Для получения массива обновленных данных пользователя можно использовать хук wp_update_user. В этом хуке передается параметр $userdata, который содержит массив обновленных данных пользователя.


function my_update_user_callback( $user_id, $userdata, $userdata_raw ) {
    // Получаем массив обновленных данных пользователя
    $updated_user_data = $userdata;
}
add_action( 'wp_update_user', 'my_update_user_callback', 10, 3 );

Как получить неизмененный массив данных пользователя?

Для получения неизмененного массива данных пользователя можно использовать хук wp_update_user. В этом хуке передается параметр $userdata_raw, который содержит неизмененный массив данных пользователя.


function my_update_user_callback( $user_id, $userdata, $userdata_raw ) {
    // Получаем неизмененный массив данных пользователя
    $original_user_data = $userdata_raw;
}
add_action( 'wp_update_user', 'my_update_user_callback', 10, 3 );

Как изменить данные пользователя после их обновления?

Для изменения данных пользователя после их обновления используется хук wp_update_user. Этот хук срабатывает после обновления пользователя и отправки электронной почты.

Для изменения данных пользователя можно использовать следующий пример кода:


function update_user_data( $user_id, $userdata, $userdata_raw ) {
    // Ваш код для изменения данных пользователя
}
add_action( 'wp_update_user', 'update_user_data', 10, 3 );

Как отключить отправку электронной почты после обновления пользователя?

Для отключения отправки электронной почты после обновления пользователя можно использовать следующий пример кода:


function disable_user_email( $user_id, $userdata, $userdata_raw ) {
    remove_action( 'wp_update_user', 'wp_send_new_user_notifications' );
}
add_action( 'wp_update_user', 'disable_user_email', 10, 3 );

Как изменить содержимое электронной почты, отправляемой после обновления пользователя?

Для изменения содержимого электронной почты, отправляемой после обновления пользователя, можно использовать следующий пример кода:


function customize_user_email( $user_id, $userdata, $userdata_raw ) {
    $subject = 'Новая тема письма';
    $message = 'Новое содержимое письма';
    add_filter( 'wp_mail_subject', function( $subject ) {
        return 'Новая тема письма';
    } );
    add_filter( 'wp_mail_content_type', function( $content_type ) {
        return 'text/html';
    } );
    add_filter( 'wp_mail', function( $atts ) {
        $atts['message'] = 'Новое содержимое письма';
        return $atts;
    } );
}
add_action( 'wp_update_user', 'customize_user_email', 10, 3 );

Как добавить дополнительные поля в массив данных пользователя перед обновлением?

Для добавления дополнительных полей в массив данных пользователя перед обновлением, можно использовать хук user_profile_update_errors. Этот хук позволяет добавить дополнительные проверки и ошибки перед обновлением данных пользователя.

// Пример использования хука user_profile_update_errors
add_action( 'user_profile_update_errors', 'my_custom_user_profile_update_errors', 10, 3 );
function my_custom_user_profile_update_errors( $errors, $update, $user ) {
    // Добавляем дополнительное поле 'my_custom_field' в массив данных пользователя
    $user['my_custom_field'] = $_POST['my_custom_field'];
    return $errors;
}

Как проверить, был ли пользователь только что обновлен?

Для проверки, был ли пользователь только что обновлен, можно использовать хук profile_update. Этот хук срабатывает после обновления данных пользователя и позволяет выполнить дополнительные действия.

// Пример использования хука profile_update
add_action( 'profile_update', 'my_custom_profile_update', 10, 2 );
function my_custom_profile_update( $user_id, $old_user_data ) {
    // Проверяем, был ли пользователь только что обновлен
    if ( $old_user_data->user_registered != $user_data->user_registered ) {
        // Пользователь только что был обновлен
        // Выполняем дополнительные действия
    }
}

Как выполнить дополнительные действия после обновления пользователя?

Для выполнения дополнительных действий после обновления пользователя, можно использовать хук wp_update_user. Этот хук срабатывает после обновления данных пользователя и отправки электронных писем.

// Пример использования хука wp_update_user
add_action( 'wp_update_user', 'my_custom_wp_update_user', 10, 3 );
function my_custom_wp_update_user( $user_id, $userdata, $userdata_raw ) {
    // Выполняем дополнительные действия после обновления пользователя
}

Хук wp_update_user позволяет добавить дополнительные поля в массив данных пользователя перед обновлением, проверить, был ли пользователь только что обновлен, и выполнить дополнительные действия после обновления пользователя. Этот хук полезен для разработчиков WordPress, которым требуется расширить функциональность обновления пользовательских данных.

Связанные элементы

  • Функция wp_insert_user(): добавляет нового пользователя в базу данных.
  • Функция wp_delete_user(): удаляет пользователя из базы данных.
  • Функция wp_get_current_user(): возвращает объект текущего пользователя.
  • Функция wp_set_password(): устанавливает новый пароль для пользователя.
  • Функция wp_authenticate(): аутентификация пользователя по логину и паролю.
  • Хук user_register: срабатывает после успешной регистрации нового пользователя.
  • Хук profile_update: срабатывает после обновления профиля пользователя.
  • Хук delete_user: срабатывает перед удалением пользователя из базы данных.
  • Класс WP_User: представляет пользователя WordPress и предоставляет методы для работы с его данными.
  • Класс WP_User_Query: выполняет запросы к базе данных для получения пользователей, соответствующих заданным параметрам.
Обсуждение