jeudi , 22 octobre 2020

Trouver et supprimer les post_meta dupliquées

Si vous voyez des clés meta dupliquées dans la table post_meta de WordPress, voici une requête permettant de sélectionner les clés à supprimer.

SELECT * FROM (SELECT meta_id FROM (SELECT meta_table_1.* FROM p1ct0f_postmeta meta_table_1, p1ct0f_postmeta meta_table_2 WHERE ( meta_table_1.post_id = meta_table_2.post_id AND meta_table_1.meta_value = meta_table_2.meta_value AND meta_table_1.meta_key = meta_table_2.meta_key ) ORDER BY meta_table_2.post_id) Table_All_Duplicates GROUP BY meta_id HAVING COUNT(*)>1) Unique_Dupes WHERE meta_id NOT IN (SELECT min(meta_id) AS min_meta_id FROM p1ct0f_postmeta GROUP BY post_id,meta_key,meta_value HAVING COUNT(post_id) > 1 AND COUNT(meta_key) > 1 AND COUNT(meta_value) > 1 AND COUNT(meta_key >= 1));

Comme on ne peut pas supprimer des lignes d’une table en se basant sur un SELECT, la solution trouvée rapidement est de récupérer les meta_id dans un fichier Excel et de créer la requête SQL :

=CONCATENATE("DELETE FROM `wp_postmeta` WHERE `meta_id` = " ; A2 ; ";")

Source : https://derrick.blog/2019/04/17/finding-duplicate-wordpress-post-meta/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *