web-dev-qa-db-fra.com

Supprimer l'enregistrement wp_postmeta dupliqué

J'ai beaucoup d'enregistrements wp_postmeta dupliqués (des centaines d'enregistrements avec le même post_id & meta_key) et j'ai besoin de supprimer en toute sécurité via mysql. Existe-t-il un moyen efficace de supprimer l'enregistrement postmeta?.

 wp_postmeta table 

Une autre question est de savoir comment créer une implémentation de code pour empêcher cette duplication postmeta. Merci beaucoup :-)

4
Ivan Slaughter

Il est assez compliqué demande groupée, afin d'éviter les problèmes, envisagez d'utiliser Cleanup Duplicate Meta plugin.

Les entrées en double sont dues à l'utilisation de add_post_meta(). Utilisez simplement update_post_meta() (même pour créer une méta, cela fonctionne) - et vous aurez toujours un méta-champ avec un certain nom par publication.

3
KAGG Design

Essayez-le pour supprimer l'enregistrement wp_postmeta dupliqué:

DELETE FROM `wp_postmeta` WHERE `meta_id` NOT IN (SELECT * FROM (SELECT MAX(`pm`.`meta_id`) FROM `wp_postmeta` pm GROUP BY `pm`.`post_id`, `pm`.`meta_key`) x)

Utilisez update_post_meta au lieu de add_post_meta pour empêcher la création de postmeta en double.

2
MahdiY