Passer au contenu principal

ArtinTech Solution

Letting Admins Change a Product Variant After an Order Is Placed

« Pouvez-vous passer ma commande en taille 32 au lieu de 30 ? » est l’un des messages les plus fréquents qu’une boutique de mode en ligne reçoit après le checkout, et WooCommerce n’a aucune réponse intégrée à cette demande.

Deux obstacles distincts

Premier obstacle : les articles d’une commande WooCommerce n’ont aucune action « changer de variante » dans l’interface. On peut modifier la quantité et le prix d’une ligne, ou la supprimer et ajouter un autre produit, mais changer seulement la variante en gardant le même produit, le même prix et la même quantité n’est pas proposé.

Second obstacle, moins évident : la modification native des lignes ne fonctionne que tant que $order->is_editable() renvoie true, c’est-à-dire, sur une installation standard, pour les statuts pending, on-hold ou auto-draft. En pratique, la plupart des vraies commandes sont déjà passées en Processing quand le client demande un changement de taille, ce qui bloque totalement l’éditeur natif.

Ce que nous avons construit

Nous avons ajouté un lien Change variant sous chaque ligne de produit variable sur l’écran de modification de la commande, volontairement indépendant de la vérification is_editable() de WooCommerce et soumis uniquement aux droits d’administrateur, car corriger une variante après coup est justement la situation où la commande a déjà avancé. Un clic charge toutes les combinaisons de taille, couleur et longueur du produit sous forme de pastilles cliquables, en réutilisant le sélecteur conçu pour le Manual Order Creator.

Le choix d’une nouvelle variante appelle la méthode native de WooCommerce WC_Order_Item_Product::set_variation(), celle-là même que le checkout utilise en interne pour créer la ligne, de sorte que les métadonnées d’attributs ont exactement la forme attendue par le reste de WooCommerce, au lieu d’une approximation maison qui casse dans les e-mails de commande ou les exports CSV.

Chaque changement ajoute aussi une note de commande indiquant précisément ce qui a changé (par exemple de Size 56 / Length 43 / Deep Blue à Size 50 / Length 43 / Deep Blue), pour garder une trace claire si un client conteste ce qu’il a reçu.

Ce qu’elle ne fait volontairement pas

Cette fonction ne change que l’identité de la variante : taille, couleur, longueur et nom de l’article. Elle ne modifie pas automatiquement le prix, la quantité ni le stock. C’est une limite délibérée : modifier discrètement ce qui a été facturé au client ou ajuster automatiquement l’inventaire sont des décisions que l’équipe doit prendre explicitement, pas des effets secondaires d’une correction de taille.

Points clés

  • Une fonction qui n’agit que tant qu’une commande est « modifiable » au sens étroit de la plateforme résout souvent le mauvais cas : le vrai besoin apparaît une fois cette fenêtre refermée.
  • Réutiliser les méthodes setter de la plateforme, plutôt que d’écrire directement les métadonnées, garde les modifications sur mesure compatibles avec tout ce qui lit ces données.
  • Définir explicitement ce qu’une fonction ne touche pas (prix, stock) est aussi important que ce qu’elle fait.

À lire aussi : enrichir la fenêtre d’aperçu de commande, comment nous avons créé un outil de commandes manuelles.

Vous rencontrez une limite similaire dans votre administration WooCommerce ou WordPress ? Parlons-en : ArtinTech Solution conçoit exactement ce type d’outils sur mesure pour les boutiques.

Share this article

Laisser un commentaire

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