The profile_update WordPress PHP action fires immediately after an existing user is updated.
Usage
add_action('profile_update', 'your_custom_function', 10, 3);
function your_custom_function($user_id, $old_user_data, $userdata) {
// your custom code here
}
Parameters
$user_id(int) – User ID.$old_user_data(WP_User) – Object containing user’s data prior to update.$userdata(array) – The raw array of data passed towp_insert_user().
More information
See WordPress Developer Resources: profile_update
Examples
Log user profile updates
Log user profile updates in a file.
add_action('profile_update', 'log_user_profile_updates', 10, 3);
function log_user_profile_updates($user_id, $old_user_data, $userdata) {
$log_file = fopen("user_updates.log", "a");
fwrite($log_file, "User ID: " . $user_id . " updated on: " . date("Y-m-d H:i:s") . "\n");
fclose($log_file);
}
Send email notification on email change
Send an email notification when a user changes their email address.
add_action('profile_update', 'send_email_on_email_change', 10, 3);
function send_email_on_email_change($user_id, $old_user_data, $userdata) {
if ($old_user_data->user_email != $userdata['user_email']) {
wp_mail($userdata['user_email'], 'Email Address Changed', 'Your email address has been updated.');
}
}
Update custom user meta on role change
Update custom user meta when a user’s role is changed.
add_action('profile_update', 'update_custom_meta_on_role_change', 10, 3);
function update_custom_meta_on_role_change($user_id, $old_user_data, $userdata) {
if (isset($userdata['role']) && $old_user_data->roles[0] != $userdata['role']) {
update_user_meta($user_id, 'previous_role', $old_user_data->roles[0]);
}
}
Set user’s display name to their first and last name
Update the user’s display name to their first and last name after profile update.
add_action('profile_update', 'set_display_name_to_first_last', 10, 3);
function set_display_name_to_first_last($user_id, $old_user_data, $userdata) {
$first_name = $userdata['first_name'];
$last_name = $userdata['last_name'];
$display_name = trim($first_name . ' ' . $last_name);
if (!empty($display_name)) {
wp_update_user(array('ID' => $user_id, 'display_name' => $display_name));
}
}
Copy user’s email to a custom field
Copy the user’s email address to a custom field after profile update.
add_action('profile_update', 'copy_email_to_custom_field', 10, 3);
function copy_email_to_custom_field($user_id, $old_user_data, $userdata) {
if ($old_user_data->user_email != $userdata['user_email']) {
update_user_meta($user_id, 'email_copy', $userdata['user_email']);
}
}