Using WordPress ‘password_reset’ PHP action

The password_reset WordPress PHP action fires before the user’s password is reset.

Usage

add_action('password_reset', 'your_custom_function', 10, 2);

function your_custom_function($user, $new_pass) {
  // Your custom code here

  return;
}

Parameters

  • $user (WP_User): The user object.
  • $new_pass (string): The new user password.

More information

See WordPress Developer Resources: password_reset

Examples

Log password reset events

Log password reset events to a custom log file.

add_action('password_reset', 'log_password_reset', 10, 2);

function log_password_reset($user, $new_pass) {
  $log_entry = "Password reset for user: {$user->user_login} ({$user->user_email}) at " . current_time('mysql') . "\n";
  file_put_contents(WP_CONTENT_DIR . '/password_reset.log', $log_entry, FILE_APPEND);
}

Send custom email notification on password reset

Send a custom email notification to the user when their password is reset.

add_action('password_reset', 'custom_password_reset_email', 10, 2);

function custom_password_reset_email($user, $new_pass) {
  $subject = 'Your password has been reset';
  $message = "Hi {$user->display_name},\n\nYour password has been reset. Please use the following new password to log in: {$new_pass}\n\nBest regards,\nThe Team";
  wp_mail($user->user_email, $subject, $message);
}

Set custom meta data on password reset

Set a custom user meta value when the user’s password is reset.

add_action('password_reset', 'set_password_reset_meta', 10, 2);

function set_password_reset_meta($user, $new_pass) {
  update_user_meta($user->ID, 'last_password_reset', current_time('mysql'));
}

Log password strength

Log the password strength of the new password when it is reset.

add_action('password_reset', 'log_password_strength', 10, 2);

function log_password_strength($user, $new_pass) {
  $strength = wp_check_password_strength($new_pass);
  $log_entry = "Password strength for {$user->user_login} ({$user->user_email}): {$strength}\n";
  file_put_contents(WP_CONTENT_DIR . '/password_strength.log', $log_entry, FILE_APPEND);
}

Notify admin of password reset

Send an email notification to the admin when a user’s password is reset.

add_action('password_reset', 'notify_admin_password_reset', 10, 2);

function notify_admin_password_reset($user, $new_pass) {
  $admin_email = get_option('admin_email');
  $subject = "User password reset: {$user->user_login}";
  $message = "The password for user {$user->user_login} ({$user->user_email}) has been reset.";
  wp_mail($admin_email, $subject, $message);
}