The delete_user WordPress PHP action fires immediately before a user is deleted from the database.
Usage
add_action('delete_user', 'your_function_name', 10, 3); function your_function_name($id, $reassign, $user) { // your custom code here }
Parameters
- $id (int) – ID of the user to delete.
- $reassign (int|null) – ID of the user to reassign posts and links to. Default null, for no reassignment.
- $user (WP_User) – WP_User object of the user to delete.
More information
See WordPress Developer Resources: delete_user
Examples
Send an email when a user is deleted
Sends an email to the site administrator when a user is deleted.
add_action('delete_user', 'notify_admin_user_deleted', 10, 3); function notify_admin_user_deleted($id, $reassign, $user) { $admin_email = get_option('admin_email'); $message = "User {$user->display_name} ({$user->user_email}) has been deleted."; wp_mail($admin_email, 'User Deleted', $message); }
Log user deletion
Logs user deletion to a custom log file.
add_action('delete_user', 'log_user_deletion', 10, 3); function log_user_deletion($id, $reassign, $user) { $log_message = "User {$user->display_name} (ID: {$id}) deleted at " . current_time('mysql') . PHP_EOL; error_log($log_message, 3, '/path/to/your/user_deletion.log'); }
Reassign posts to a specific user
Reassigns the deleted user’s posts to a specific user (e.g., user with ID 2).
add_action('delete_user', 'reassign_posts_to_user', 10, 3); function reassign_posts_to_user($id, $reassign, $user) { $reassign = 2; return $reassign; }
Remove user meta data
Removes all user meta data associated with the deleted user.
add_action('delete_user', 'remove_user_meta_data', 10, 3); function remove_user_meta_data($id, $reassign, $user) { delete_metadata('user', $id, '', '', true); }
Delete user’s comments
Deletes all comments made by the deleted user.
add_action('delete_user', 'delete_users_comments', 10, 3); function delete_users_comments($id, $reassign, $user) { $comments = get_comments(array('user_id' => $id)); foreach ($comments as $comment) { wp_delete_comment($comment->comment_ID, true); } }