Fires immediately after an existing user is updated.
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 to wp_insert_user() .
More Arguments from wp_insert_user( … $userdata )
An array, object, or WP_User object of user data arguments.
ID
intUser ID. If supplied, the user will be updated.user_pass
stringThe plain-text user password for new users.
Hashed password for existing users.user_login
stringThe user’s login username.user_nicename
stringThe URL-friendly user name.user_url
stringThe user URL.user_email
stringThe user email address.display_name
stringThe user’s display name.
Default is the user’s username.nickname
stringThe user’s nickname.
Default is the user’s username.first_name
stringThe user’s first name. For new users, will be used to build the first part of the user’s display name if$display_name
is not specified.last_name
stringThe user’s last name. For new users, will be used to build the second part of the user’s display name if$display_name
is not specified.description
stringThe user’s biographical description.rich_editing
stringWhether to enable the rich-editor for the user.
Accepts'true'
or'false'
as a string literal, not boolean. Default'true'
.syntax_highlighting
stringWhether to enable the rich code editor for the user.
Accepts'true'
or'false'
as a string literal, not boolean. Default'true'
.comment_shortcuts
stringWhether to enable comment moderation keyboard shortcuts for the user. Accepts'true'
or'false'
as a string literal, not boolean. Default'false'
.admin_color
stringAdmin color scheme for the user. Default'fresh'
.use_ssl
boolWhether the user should always access the admin over https. Default false.user_registered
stringDate the user registered in UTC. Format is ‘Y-m-d H:i:s’.user_activation_key
stringPassword reset key. Default empty.spam
boolMultisite only. Whether the user is marked as spam.
Default false.show_admin_bar_front
stringWhether to display the Admin Bar for the user on the site’s front end. Accepts'true'
or'false'
as a string literal, not boolean. Default'true'
.role
stringUser’s role.locale
stringUser’s locale. Default empty.meta_input
arrayArray of custom user meta values keyed by meta key.
Default empty.
Source
do_action( 'profile_update', $user_id, $old_user_data, $userdata );
Basic Usage
Finding out if a user email was updated from the admin dashboard, can work for other fields as well if value being checked is changed:
Note if you’re using this hook to do a redirect once a user’s set their profile details, it can break the lost password functionality as that sends the email AFTER updating the profile with a new code. Example fix, by checking if user_activation_key has changed: