Baptiste Mourey

FR EN

Trouver les produits avec des UGS dupliquées dans WooCommerce

WooCommerce empêche normalement d’attribuer la même UGS (ou SKU en anglais) à plusieurs produits. Il arrive néanmoins que des doublons apparaissent après un import, une synchronisation avec un logiciel tiers ou une modification directe de la base de données.

Ces doublons peuvent ensuite perturber la gestion des stocks ou empêcher la mise à jour d’un produit. Pour les repérer rapidement, il suffit d’interroger la table wp_postmeta, dans laquelle WooCommerce enregistre les UGS sous la clé _sku.

Lister les UGS présentes plusieurs fois

La requête suivante retourne toutes les UGS non vides présentes sur plusieurs produits :

1SELECT meta_value AS sku, COUNT(DISTINCT post_id) AS products
2FROM wp_postmeta
3WHERE meta_key = '_sku'
4  AND meta_value != ''
5GROUP BY meta_value
6HAVING COUNT(DISTINCT post_id) > 1
7ORDER BY products DESC;

La colonne products indique combien de produits partagent chaque UGS. Si votre installation utilise un préfixe de tables différent de wp_, pensez à adapter le nom wp_postmeta.

Identifier les produits concernés

Une fois une UGS dupliquée repérée, cette seconde requête permet de retrouver les produits et variations auxquels elle est associée. Remplacez simplement UGS-A-RECHERCHER par la valeur obtenue précédemment :

 1SELECT
 2  p.ID,
 3  p.post_title,
 4  p.post_type,
 5  p.post_status,
 6  pm.meta_value AS sku
 7FROM wp_posts AS p
 8INNER JOIN wp_postmeta AS pm ON pm.post_id = p.ID
 9WHERE pm.meta_key = '_sku'
10  AND pm.meta_value = 'UGS-A-RECHERCHER'
11ORDER BY p.ID;

La colonne post_type permet notamment de distinguer un produit classique (product) d’une variation (product_variation). L’identifiant retourné dans la colonne ID permet ensuite de retrouver chaque élément dans l’administration de WordPress.

Ces requêtes sont uniquement destinées au diagnostic : elles ne modifient aucune donnée. Pour corriger les doublons, je préfère modifier les produits depuis WooCommerce ou depuis la source de l’import plutôt que de supprimer directement des lignes dans la base. Cela permet à WooCommerce de mettre correctement à jour ses données annexes et ses caches.

Comme toujours avant une intervention en base de données, pensez à effectuer une sauvegarde.