BEAR - WooCommerce Bulk Editor and Products Manager Professional

Modifier les SKU WooCommerce en masse : remplacer, préfixe, variations, doublons

Les SKU changent rarement un par un. Un fournisseur renomme un code présent dans des centaines de SKU, un nouveau canal de vente demande un préfixe, des variations ont besoin de SKU construits à partir du SKU du parent et de leur taille, de nouveaux produits ont besoin de numéros. BEAR réalise chacun de ces cas comme une modification groupée de SKU WooCommerce dans l'onglet Modification groupée (Bulk Edit). Vous trouverez ci-dessous ce que fait chaque comportement, comment les variables construisent les SKU des variations, les limites de la numérotation séquentielle et comment garder des SKU uniques, car WooCommerce refuse les doublons et un doublon interrompt une exécution groupée.

Modifier les SKU WooCommerce en masse : les comportements ajouter à la fin, ajouter au début, nouveau, remplacer

Choisissez d'abord les produits : filtrez-les dans l'onglet Filtres (Filters) ou cochez leurs lignes. La ligne La modification groupée sera appliquée à : (Bulk editing will be applied to:) au-dessus du formulaire d'édition groupée vous indique quel ensemble l'exécution va modifier. Cochez ensuite la ligne SKU dans l'onglet Modification groupée, saisissez la valeur, choisissez un comportement et cliquez sur Effectuer la modification groupée (Do Bulk Edit). Pour un produit dont le SKU est AB-100 :

ComportementCe qu'il faitValeurRésultat
ajouter à la fin (append)ajoute le texte après le SKU actuel-EUAB-100-EU
ajouter au début (prepend)ajoute le texte avantSHOP-SHOP-AB-100
nouveau (new)remplace le SKU entierX-{ID}X-4821
remplacer (replace)remplace une partie du SKU par le texte du champ remplacer par le texte (replace to text)100 par 200AB-200

remplacer est une vraie fonction de recherche et remplacement à l'intérieur du SKU. Pour transformer BSO-AC-PP40, BSO-LON-PP40 et les autres en ...-DD40, filtrez le SKU avec CONTIENT (LIKE) PP40, puis remplacez PP40 par DD40. Pour les variations, activez variations et cliquez sur sélectionner toutes les variations (select all variations) avant l'exécution, afin que seules les lignes de variations correspondantes soient cochées ; la section sur les doublons en explique la raison. Le comportement modifie toutes les occurrences du texte dans un SKU : cherchez donc une partie qui ne peut pas apparaître deux fois, -PP40 plutôt que 40. Laissez remplacer par le texte vide pour supprimer le texte. Choisissez même casse (same case) ou ignorer la casse (ignore case) à côté. Ce comportement n'a ni caractères génériques ni positions : il peut supprimer ou remplacer une lettre, pas la déplacer ailleurs dans le SKU.

Sur un produit sans SKU, ajouter à la fin et ajouter au début écrivent simplement votre texte. Une variation sans SKU propre est un cas différent : l'éditeur lit le SKU que WooCommerce affiche pour elle, c'est-à-dire celui du parent. Ajouter -XL à une telle variation donne donc AB-100-XL, un bon point de départ pour les SKU de variations.

Variables : {SKU}, {ID}, {PARENT_SKU} et d'autres

La liste déroulante variable (variable) à côté de la valeur insère des espaces réservés qui sont remplis pour chaque produit : {TITLE}, {ID}, {SKU}, {MENU_ORDER}, {PARENT_ID}, {PARENT_TITLE}, {PARENT_SKU}, {REGULAR_PRICE} et {SALE_PRICE}. Vous pouvez aussi saisir {attribute:pa_size} ou {meta:your_meta_key}. Sur un produit qui n'est pas une variation, les espaces réservés du parent donnent les valeurs du produit lui-même.

  • {SKU} est le SKU actuel : nouveau avec {SKU}-v2 revient donc à ajouter à la fin avec -v2. C'est utile au milieu d'une valeur : EU-{SKU}-2026.
  • {ID} est unique par définition. ajouter à la fin avec -{ID} rend chaque SKU de l'exécution unique, ce qui est le moyen le plus rapide de sortir des doublons.
  • Les espaces réservés fonctionnent aussi dans le texte recherché de remplacer. C'est ainsi qu'on retire le SKU des titres de produits, voir modifier en masse les titres de produits.

SKU de variations à partir du SKU du parent et des attributs

Filtrez les produits variables voulus et activez variations dans le panneau d'outils : la modification groupée s'applique alors à leurs variations, et les parents sont ignorés. Ensuite, dans la ligne SKU avec nouveau :

{PARENT_SKU}-{attribute:pa_size}

Un sweat à capuche HOOD reçoit HOOD-S, HOOD-M, HOOD-XL. Remplacez pa_size par le slug de votre attribut : les attributs globaux commencent par pa_, et un attribut personnalisé du produit s'écrit sous la forme de son nom en minuscules, avec des tirets à la place des espaces. La valeur insérée est le nom du terme tel que la boutique l'affiche, majuscules et espaces compris : Dark Blue donne HOOD-Dark Blue. Nettoyez-la avec une deuxième exécution, remplacer un espace par -, et si vous voulez des majuscules, une troisième exécution avec nouveau et la variable {DO_STRING_UP} (MAJUSCULES (STRING UP)), qui représente la valeur actuelle en majuscules.

Deux attributs demandent deux exécutions. Un seul espace réservé d'attribut est lu par valeur : {PARENT_SKU}-{attribute:pa_size}-{attribute:pa_color} perd les deux attributs. Lancez d'abord nouveau avec {PARENT_SKU}-{attribute:pa_size}, puis ajouter à la fin avec -{attribute:pa_color}.

Si vous avez seulement besoin de SKU de variations uniques, {PARENT_SKU}-{ID} y parvient en une seule exécution ; la FAQ sur les SKU pour les variations le montre aussi avec la modification liée (binded editing). Pour attribuer de nouveaux SKU à une partie seulement des variations, par exemple une seule taille, voir filtrer les variations par attribut.

Numéros de SKU séquentiels et leurs limites

Une valeur qui se termine par des chiffres et un signe plus, comme 10300+, 10300+5 ou ABC-10300+, est un compteur : la syntaxe est décrite dans comment générer des SKU séquentiels. Dans la version 2.2.4, le compteur se comporte ainsi :

  • Il est incrémenté avant chaque produit. Dans l'onglet Modification groupée, 10300+ donne 10301, 10302 et ainsi de suite ; saisissez 10299+ pour commencer à 10300. Avec la modification liée, la cellule que vous modifiez garde le numéro de départ et les autres lignes cochées continuent à partir de celui-ci.
  • Il repart de zéro à chaque lot. L'éditeur envoie les produits au serveur par lots de Nombre d'éléments traités à la fois (Number of posts processed at a time) (onglet Paramètres, 30 par défaut, 100 au maximum), et chaque lot recompte depuis le début. Le premier produit du deuxième lot reçoit un numéro déjà pris, et l'exécution s'arrête sur ce doublon. Gardez chaque exécution dans les limites d'un lot : au plus ce nombre de lignes cochées, ou ce nombre de produits filtrés (en mode variations, chaque produit apporte toutes ses variations à son lot). Lancez l'exécution suivante là où la précédente s'est arrêtée.
  • Il compte sur l'ensemble de l'exécution. Il ne repart pas à chaque produit : ajouter -0+ aux variations de HOOD qui n'ont pas de SKU propre donne HOOD-1, HOOD-2, HOOD-3, et le produit suivant continue avec -4. Les produits filtrés sont numérotés dans l'ordre de leur ID, les lignes cochées dans l'ordre où vous les avez cochées.

Si vous avez besoin d'un SKU littéral qui se termine par des chiffres et un signe plus, désactivez le compteur :

// BEAR: treat "10300+" in the SKU row as plain text, not as a counter.
// Child theme functions.php or a code snippets plugin.
add_filter( 'woobe_sku_auto_increment', '__return_false' );

Éviter les SKU en double dans WooCommerce

WooCommerce exige que chaque SKU soit unique parmi les produits et les variations qui ne sont pas dans la corbeille, et refuse un doublon avec le message Invalid or duplicated SKU. (SKU invalide ou en double). Dans la version 2.2.4, BEAR écrit le nouveau SKU dans la base de données avant que WooCommerce ne le vérifie. Un doublon reste donc dans le champ SKU du produit, le reste de l'enregistrement est ignoré et la requête échoue : une exécution groupée s'arrête avec une erreur, et les produits restants de ce lot ne sont pas modifiés. Les causes typiques sont une valeur fixe unique avec nouveau pour de nombreux produits, un compteur sur plus d'un lot, et remplacer sur des variations sans SKU propre, qui reçoivent le SKU du parent lorsque le texte recherché ne s'y trouve pas : l'éditeur part du SKU que WooCommerce affiche pour elles, et le parent a déjà celui-là.

Activez le contrôle des SKU propre à BEAR pour arrêter les doublons avant qu'ils ne soient écrits :

/*
 * BEAR: refuse a SKU that another product or variation already has.
 * Child theme functions.php or a code snippets plugin.
 */
add_filter( 'woobe_init_sku_control', '__return_true' );

Avec le contrôle activé, BEAR recherche le nouveau SKU parmi tous les produits et toutes les variations, y compris ceux de la corbeille. Si un autre produit le possède, rien n'est écrit : une cellule affiche Erreur ! Ce SKU existe déjà (Error! SKU already exists), et une exécution groupée ignore ce produit et continue. Si un SKU semble libre mais est refusé, regardez dans la corbeille. Dans la version 2.2.4, le message apparaît aussi lorsqu'une cellule est enregistrée avec le SKU qu'elle a déjà ; rien ne change alors.

Pour réparer un doublon laissé par une exécution précédente, recherchez le SKU avec EXACT : les deux produits sont listés. Donnez un nouveau SKU au mauvais dans sa cellule ; une fois que cela réussit, WooCommerce enregistre de nouveau le produit complètement. Rechercher des variations par SKU explique quelles lignes une telle recherche affiche.

SKU des produits dupliqués

Le bouton de duplication du panneau d'outils utilise la duplication native de WooCommerce : une copie de AB-100 reçoit donc AB-100-1 (ou -2 si celui-ci est pris), et les variations d'un produit variable copié qui ont leur propre SKU reçoivent le même suffixe. Modifiez-les ensuite avec une modification groupée, ou laissez WooCommerce appliquer votre propre modèle au moment de la copie :

/*
 * Duplicated products and their variations get "COPY-AB-100" instead of "AB-100-1".
 * Child theme functions.php or a code snippets plugin.
 */
add_action( 'woocommerce_product_duplicate_before_save', function ( $duplicate, $original ) {
    $sku = $original->get_sku( 'edit' );
    if ( '' !== $sku ) {
        // WooCommerce adds -1, -2 ... only if COPY-AB-100 is taken as well
        $duplicate->set_sku( wc_product_generate_unique_sku( 0, 'COPY-' . $sku ) );
    }
}, 10, 2 );

Vérifier le résultat avant l'exécution suivante

  • Regardez la colonne SKU avec variations activé. Une variation qui affiche encore le SKU de son parent n'en a pas de propre ; filtrez le SKU avec Vide (Empty) pour lister ces variations.
  • Recherchez quelques nouveaux SKU avec EXACT. Un SKU manquant indique une exécution arrêtée sur un doublon : activez le contrôle des SKU et relancez le reste.
  • L'onglet Historique (History) peut annuler une exécution sur les SKU. Il ne peut pas restaurer le SKU vide d'une variation qui n'en avait pas : il enregistre le SKU du parent que l'éditeur affichait ; testez donc d'abord les exécutions sur les variations sur un seul produit.
  • Pour des milliers de produits, gardez une taille de lot adaptée à votre serveur, voir modifier en masse des milliers de produits.

Si une exécution sur les SKU se comporte autrement que ce qui est décrit ici, décrivez le comportement, la valeur et un exemple de SKU sur le forum d'assistance de BEAR.