Anonymize the Comments of Deleted Users
When a user account is deleted, keeps their comments but replaces the name with "Former member" and removes the email address, website and IP address stored with them.
Opens WPIDE on
Code
// Name shown on comments of deleted accounts.
$wpide_former_name = 'Former member';
add_action( 'delete_user', function ( $user_id ) use ( $wpide_former_name ) {
global $wpdb;
$ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM {$wpdb->comments} WHERE user_id = %d", $user_id ) );
if ( ! $ids ) {
return;
}
$wpdb->query( $wpdb->prepare(
"UPDATE {$wpdb->comments} SET user_id = 0, comment_author = %s, comment_author_email = '', comment_author_url = '', comment_author_IP = '', comment_agent = '' WHERE user_id = %d",
$wpide_former_name,
$user_id
) );
foreach ( $ids as $id ) {
clean_comment_cache( (int) $id );
}
} );
Notes
WordPress normally keeps the commenter details of deleted accounts; change $wpide_former_name to your wording.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.