Tags not Cleaned up on User Delete
-
Hello,
I discovered I had a bunch of Terms that were associated to users that no longer existed. The User Tags listings showed them as just thumbnails without names.
So I wrote a function to purge all of these terms that weren’t being used anymore, sharing here;
/** * Clean-up User Taxonomies * * @since 1.0.0 */ function clean_user_taxonomies() { global $wpdb, $wp_actions; $log_message = '<p>Clean-up User Taxonomies.<br/>'; write_log(strip_tags($log_message)); echo $log_message; $user_tags = get_terms('user_tag'); if (!empty($user_tags)){ foreach ($user_tags as $user_tag) { $user_ids = get_objects_in_term($user_tag->term_id, 'user_tag'); if (!empty($user_ids)) { foreach ($user_ids as $user_id) { $user = get_userdata($user_id); if ($user === false) { $success = wp_remove_object_terms( $user_id, $user_tag->slug, 'user_tag'); if ($success) { $log_message = "Removed User Tag from Non-Existent User: (User ID = $user_id, User Tag ID = $user_tag->term_taxonomy_id)<br/>"; write_log(strip_tags($log_message)); echo $log_message; } else { $log_message = "Error in Removing User Tag from Non-Existent User: (User ID = $user_id, User Tag ID = $user_tag->term_taxonomy_id), ERROR = $success->get_error_message()<br/>"; write_log(strip_tags($log_message)); echo $log_message; } $wpdb->queries = array(); $wp_actions = array(); wp_cache_flush(); } } } } } $log_message = '<h5>Cleaned up User Taxonomies, Complete.</h5>'; write_log(strip_tags($log_message)); echo $log_message; }
Hope someone finds it useful, basically you have to set-up a way to trigger this function and then execute it or you can trigger on admin_init.
Cheers
Viewing 4 replies - 1 through 4 (of 4 total)
Viewing 4 replies - 1 through 4 (of 4 total)
- The topic ‘Tags not Cleaned up on User Delete’ is closed to new replies.