Remove Duplicate Post Meta Rows
Run on demand to find custom field rows that are exact duplicates (same post, key and value) and keep only one of each, a common side effect of buggy imports and plugins.
Opens WPIDE on
Code
global $wpdb;
$wpide_deleted = (int) $wpdb->query(
"DELETE m1 FROM {$wpdb->postmeta} m1
INNER JOIN {$wpdb->postmeta} m2
ON m1.post_id = m2.post_id AND m1.meta_key = m2.meta_key AND m1.meta_value = m2.meta_value AND m1.meta_id > m2.meta_id"
);
if ( $wpide_deleted ) {
wp_cache_flush();
}
printf( 'Removed %d duplicate post meta row(s).', $wpide_deleted );
Notes
Only exact duplicates are removed, keeping the oldest row; back up your database first.
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.