The personal_options_update WordPress PHP action fires before the page loads on the ‘Profile’ editing screen. This action only triggers if the current user is editing their own profile.
Usage
add_action('personal_options_update', 'your_custom_function'); function your_custom_function($user_id) { // your custom code here }
Parameters
$user_id
(int) – The user ID.
More information
See WordPress Developer Resources: personal_options_update
Examples
Update user’s custom field
Update a custom field for the user when they update their profile.
add_action('personal_options_update', 'update_custom_field'); function update_custom_field($user_id) { // Get the custom field value from $_POST $custom_field_value = $_POST['custom_field']; // Update the custom field update_user_meta($user_id, 'custom_field_key', $custom_field_value); }
Send email notification on profile update
Send an email notification to the administrator when a user updates their profile.
add_action('personal_options_update', 'send_profile_update_email'); function send_profile_update_email($user_id) { // Prepare email content $subject = 'User Profile Updated'; $message = 'User ID ' . $user_id . ' has updated their profile.'; $admin_email = get_option('admin_email'); // Send the email wp_mail($admin_email, $subject, $message); }
Log profile update to a custom log file
Log profile updates to a custom log file.
add_action('personal_options_update', 'log_profile_update'); function log_profile_update($user_id) { // Prepare log entry $log_entry = date('Y-m-d H:i:s') . ' - User ID ' . $user_id . ' updated their profile.' . PHP_EOL; // Append log entry to the log file file_put_contents('/path/to/logfile.log', $log_entry, FILE_APPEND); }
Set user role based on a custom field
Set a user’s role based on the value of a custom field in their profile.
add_action('personal_options_update', 'set_user_role_based_on_custom_field'); function set_user_role_based_on_custom_field($user_id) { // Get custom field value $custom_field_value = get_user_meta($user_id, 'custom_field_key', true); // Get the user object $user = new WP_User($user_id); // Set user role based on custom field value if ($custom_field_value === 'value1') { $user->set_role('subscriber'); } elseif ($custom_field_value === 'value2') { $user->set_role('contributor'); } }
Redirect user after profile update
Redirect the user to a custom URL after updating their profile.
add_action('personal_options_update', 'redirect_after_profile_update'); function redirect_after_profile_update($user_id) { // Set the custom redirect URL $redirect_url = home_url('/custom-page/'); // Redirect the user wp_redirect($redirect_url); exit; }
Save custom date picker data from the Personal Options
Save the value of the “Date of Birth” date picker when the user updates their profile.
add_action('personal_options_update', 'save_date_of_birth_picker'); function save_date_of_birth_picker($user_id) { // Check if the current user has the capability to edit this user if (!current_user_can('edit_user', $user_id)) { return false; } // Update the user's date of birth update_user_meta($user_id, 'date_of_birth', $_POST['date_of_birth']); }
Save custom dropdown data from the Personal Options
Save the value of the “Preferred Language” dropdown when the user updates their profile.
add_action('personal_options_update', 'save_preferred_language_dropdown'); function save_preferred_language_dropdown($user_id) { // Check if the current user has the capability to edit this user if (!current_user_can('edit_user', $user_id)) { return false; } // Update the user's preferred language update_user_meta($user_id, 'preferred_language', $_POST['preferred_language']); }
Save custom checkbox data from the Personal Options
Save the value of the “Enable Dark Mode” checkbox when the user updates their profile.
add_action('personal_options_update', 'save_dark_mode_checkbox'); function save_dark_mode_checkbox($user_id) { // Check if the current user has the capability to edit this user if (!current_user_can('edit_user', $user_id)) { return false; } // Update the user's dark mode preference $enable_dark_mode = isset($_POST['enable_dark_mode']) ? 1 : 0; update_user_meta($user_id, 'enable_dark_mode', $enable_dark_mode); }
Save custom field data from the Personal Options
Save the value of the “Favorite Color” field when the user updates their profile.
add_action('personal_options_update', 'save_favorite_color_field'); function save_favorite_color_field($user_id) { // Check if the current user has the capability to edit this user if (!current_user_can('edit_user', $user_id)) { return false; } // Update the user's favorite color update_user_meta($user_id, 'favorite_color', $_POST['favorite_color']); }
Save custom field data
This example saves the custom field data when the profile is updated.
add_action('personal_options_update', 'save_favorite_color_field'); function save_favorite_color_field($user_id) { if (current_user_can('edit_user', $user_id)) { update_user_meta($user_id, 'favorite_color', sanitize_text_field($_POST['favorite_color'])); } }