WooCommerce : Import CSV de produits variables et variations

27 Sep 2017

EDIT 02/092018 : Mise à jour de l’article suite à la version 3.4 de WooCommerce
L’import de produits et variations fonctionne désormais avec les libellés en Français (merci à Philochardbleu de me l’avoir signalé !).

Bonjour,

Aujourd’hui un petit topo sur l’importation (ou la modification) en masse de produits variables et des variations associées dans une boutique WooCommerce, au moyen d’un fichier CSV, et gratuitement. En effet, depuis la version 3.1, l’extension WooCommerce intègre l’import/export natif de fichier CSV (donc sans extension payante) mais l’opération n’est pas si triviale que ça quand on débute comme moi avec ce plugin.

Je vous passe également les détails de mes nombreuses et infructueuses tentatives, pour vous présenter directement une méthode valide. Sachez juste que l’import n’a fini par fonctionner dans sa globalité que lorsque j’ai utilisé les libellés anglais des colonnes dans le fichier CSV, et encore, en en adaptant certains. Des heures perdues à cause d’anomalies dans la gestion des traductions ou de l’encodage (guillemets, apostrophes, html ? J’en ai eu marre de débugger les libellés un par un…), c’est un peu dommage. Mais il faut parfois savoir essuyer les plâtres !

Important : Cette méthode permet d’importer en masse, mais aussi de modifier des produits/variations quand ils existent déjà (il suffit de cocher la case adéquate sur la page d’import). Elle permet d’automatiser des modifications de prix, catégories, ou de n’importe quelle caractéristique, sur un nombre quelconque de produits ou variations.

Attention cependant, avec le mode modification, car il est très puissant et donc très dangereux pour votre base de produits, à l’image des requêtes SQL exécutées sur une base données… La moindre inadvertance (faute de frappe, de copier/coller, erreur d’identifiant, de parent, etc.) peut s’avérer fatale, puisqu’une ligne du fichier peut modifier produits ou variations existants ainsi que leurs relations de dépendance, voire carrément en supprimer si on n’est pas rigoureux et attentif !

Bref, sachant cela, vous pouvez oublier toutes les extensions payantes devenues inutiles – du moins pour ce genre de gestion simple et suffisante pour mon besoin ! – et aller voir la documentation sur l’import-export natif de fichier CSV dans WooCommerce.

Description du besoin

J’ai essayé de faire le plus simple et le plus générique possible pour ne pas alourdir l’article et pour que tout le monde puisse imaginer son propre délire…

Je voulais simplement importer des centaines de produits du même type avec catégories et étiquettes, chacun ayant des variations définies par un attribut global, les variations pouvant être sélectionnées sur la page du produit via un menu déroulant présentant les choix possibles de l’attribut global.

Note : Les produits n’ont pas forcément les mêmes variations, mais elles sont toutes définies par le même attribut global.

Exemple : Vente de photos (le produit) avec des tailles différentes (les variations) et un prix associé, sélectionnables sur la page du produit.

Le fichier CSV

Voici les trois lignes type permettant d’importer (ou de modifier) toute la base produits d’un coup :

Type,UGS,Nom,Publié,En stock ?,Largeur (cm),Hauteur (cm),Tarif régulier,Catégories,Étiquettes,Images,Parent,Nom de l'attribut 1,Valeur(s) de l'attribut 1,Attribut 1 visible,Attribut 1 global,Attribut 1 par défaut

variable,REF_PRODUIT,Nom du produit,1,1,,,,Catégorie 1,"Étiquette 1, Étiquette 2, Étiquette 3",CHEMIN_IMAGE,,Attribut,"Val Attr 1, Val Attr 2, Val Attr 3",1,1,Val Attr 2

variation,REF_PROD_VAR,Nom de la variation,1,1,30,20,100,,,,REF_PRODUIT,Attribut,Val Attr N,,1,

Explications

La première ligne sert d’entête au fichier ; elle décrit les colonnes, il n’y en a qu’une. Les libellés sont en anglais car impossible d’importer correctement les attributs/variations avec les libellés français associés aux attributs. A noter que pour la traduction des libellés du français vers l’anglais, je me suis référé au schéma d’import CSV de WooCommerce.

La deuxième ligne permet de définir un produit, et la troisième, une variation. Le fichier en contiendra un nombre quelconque défini par votre projet.

Remarque très très pratique : Pour définir cet ensemble minimal de colonnes (pour mon projet), j’ai paramétré des produits et variations à la main, avec les attributs, catégories et étiquettes associés, puis j’ai utilisé la fonction d’export afin d’avoir un fichier CSV de base, que j’ai ensuite nettoyé en supprimant les colonnes inutiles (dont la valeur par défaut était OK pour moi et n’avait pas besoin d’être modifiée par la suite).

Remarque sur la remarque : Vous pouvez très bien conserver toutes les colonnes du fichier CSV exporté, et ignorer les colonnes superflues. Personnellement, j’utilise des scripts pour générer ou modifier automatiquement le fichier, et je préfère ne pas m’encombrer avec des éléments inutiles.

Les points de syntaxe :

  • séparateur = virgule, SANS ESPACE NI AVANT NI APRÈS
  • chaînes de caractères avec ou sans espaces SANS GUILLEMETS autour, sauf si contiennent une virgule
  • éléments de liste séparés par des virgules et ENTOURÉS PAR DES GUILLEMETS (par exemple les étiquettes ou les valeurs d’attribut)
  • certains attributs ne sont pas reconnus à cause de majuscules (erreur dans la doc ou dans le soft ?), par exemple « Regular Price » est FAUX, et le libellé reconnu est « Regular price »

Le contenu… les noms et libellés parlent d’eux-mêmes mais voici le principe de création des produits/variations :

  • le produit (de type variable) doit définir ses caractéristiques (catégorie, étiquettes, image) et un attribut « Attribut » (global ou non mais ici oui) et ses valeurs possibles « Val Attr # »
  • les variations doivent référencer le produit (le parent) et être associées à une valeur de l’attribut, puis définir leurs caractéristiques propres (tailles, prix)
  • la valeur par défaut de l’attribut permet d’afficher tout de suite une variation au chargement de la page produit

On pourrait utiliser plusieurs attributs et combiner leurs valeurs pour définir les variations ; il faudrait alors ajouter 5 nouvelles colonnes « Attribute # Name », « Attribut # value(s) », etc. pour chaque nouvel attribut afin de les spécifier dans les produits et de les référencer dans les variations. Le nombre de lignes de variations peut alors très vite augmenter pour couvrir les combinaisons possibles définies par les attributs 😉

Remarques par rapport au mode manuel (insertion via l’interface administration) :

  • pas besoin de définir l’attribut global ou les catégories/tags au préalable, ils seront créés par l’import 🙂
  • pas besoin de spécifier que les variations utilisent l’attribut car c’est automatique

Conclusion

Vous n’aurez évidemment pas les mêmes besoins que moi, mais vous avez compris que le principe sera le même pour d’autres configurations de boutiques… On peut ainsi désormais gérer automatiquement la base produits de son magasin en ligne à partir d’un fichier CSV (stocké en local et mis à jour dans un éditeur texte ou avec un tableur).

Bien sûr, si les variations sont définies par de nombreux attributs avec de nombreuses valeurs possibles, il y aura beaucoup de combinaisons possibles, et si en plus les variations ne sont pas les mêmes pour chaque produit, le fichier CSV va devenir compliqué à générer et à maintenir… (Qui a dit « awk » dans le fond ?) Il faudra donc se replier sur une gestion manuelle peut-être plus rapide dans certains cas !

J’imagine enfin que vous rencontrerez d’autres problèmes avec certains libellés car je n’ai balayé qu’une petite partie des possibilités de cette superbe extension. Le problème étant qu’elle n’est pas très loquace lors de l’import… En même temps, je me suis jeté dans le fichier CSV sans même chercher un mode debug ; j’ai peut-être galéré pour rien 😉 Et vous avez le droit de vous moquer !

Bon courage à tou-te-s avec vos e-boutiques !