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.
Table of contents
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']));
}
}