
🏪 Statuts de commande WooCommerce personnalisés : comment créer et configurer
Nous avons traité la commande, mais il n’existe pas de statut standard pour cette étape. «En cours de traitement» pour l’assemblage, «Terminée» pour l’expédition, et un vide entre les deux. La boutique se développe et les sept statuts par défaut de WooCommerce ne suffisent plus.
Vous pouvez ajouter un statut personnalisé de deux manières: avec quelques lignes de code dans functions.php ou avec une extension prête à l’emploi. Les deux approches fonctionnent et ne cassent pas la logique standard des commandes. Voici la marche à suivre, étape par étape, avec du code testé et une alternative sans programmation.
💡 Aperçu rapide:
- Quels statuts sont fournis par défaut avec WooCommerce et pourquoi ils ne suffisent pas
- Enregistrer un statut personnalisé via du code PHP
- Ajouter plusieurs statuts et des notifications email personnalisées
- Extensions pour les statuts de commande quand le code n’est pas adapté
- Réponses aux questions fréquentes: HPOS, couleurs, suppression, traduction
Quels statuts sont fournis par défaut avec WooCommerce
Par défaut, WooCommerce propose sept statuts de commande. Chacun est étroitement lié à un moment précis du cycle de vie:
Statut | Signification |
|---|---|
En attente de paiement | Commande créée, paiement non reçu |
En cours de traitement | Paiement reçu, commande en cours de traitement |
Terminée | Commande honorée et clôturée |
En attente | En attente de confirmation de paiement |
Annulée | Annulée par le client ou l’administrateur |
Remboursée | Fonds retournés |
Échouée | Paiement échoué |
Pour une boutique classique, cet ensemble est suffisant. Mais dès qu’une logique de traitement personnalisée apparaît, comme une production sur commande ou une livraison en plusieurs étapes, sept statuts ne suffisent plus. Vous avez besoin de «En assemblage», «Remis au transporteur», «En attente d’acompte» ou «Vérification par le responsable requise».
Étape 1: enregistrer un statut personnalisé via du code
Avant WooCommerce 3.0, les statuts utilisaient la taxonomie shop_order_status, et en ajouter un nouveau n’était pas simple. C’est désormais plus facile: un statut de commande est un statut de publication du type de publication personnalisé shop_order. Il s’enregistre avec la seule fonction register_post_status() et le filtre wc_order_statuses.
Le code s’ajoute dans le fichier functions.php du thème enfant. Avant toute modification, faites une sauvegarde complète du site.
1 // Registering a new order status 2 function sdstudio_register_custom_order_status() { 3 register_post_status( 'wc-preparing', array( 4 'label' => 'In assembly', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In assembly (%s)', 11 'In assembly (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 } 16 add_action( 'init', 'sdstudio_register_custom_order_status' ); 17 18 // Adding status to WooCommerce list 19 function sdstudio_add_custom_order_status( $order_statuses ) { 20 $order_statuses['wc-preparing'] = 'In assembly'; 21 return $order_statuses; 22 } 23 add_filter( 'wc_order_statuses', 'sdstudio_add_custom_order_status' );
Après avoir sauvegardé functions.php, le nouveau statut apparaîtra dans la liste déroulante des statuts de commande de l’administration et dans les rapports WooCommerce. Le système le considère comme un statut à part entière, vous pouvez filtrer les commandes, changer le statut manuellement et l’utiliser dans des hooks.
Ce qui se passe ici
La fonction register_post_status() crée un nouveau statut de publication avec le préfixe wc-, c’est une convention WooCommerce. Le paramètre label définit le nom lisible dans l’administration. label_count, via _n_noop(), gère l’affichage correct des compteurs dans l’interface en français.
Le filtre wc_order_statuses ajoute le statut au tableau que WooCommerce utilise pour construire la liste. Sans cette étape, le statut sera enregistré dans le système mais n’apparaîtra pas dans le menu déroulant des statuts de commande.

Visuellement, le résultat ressemble exactement à cela, le nouveau statut s’affiche dans la liste générale aux côtés des statuts standard.
Étape 2: ajouter plusieurs statuts et notifications email
Pour un seul statut, le code ci-dessus fonctionne parfaitement. Si vous en avez besoin de plusieurs, il suffit de dupliquer register_post_status() à l’intérieur de la même fonction et d’ajouter une entrée au tableau $order_statuses. Par exemple, pour une boutique avec production sur commande:
1 function sdstudio_register_multiple_statuses() { 2 // Status "In production" 3 register_post_status( 'wc-in-production', array( 4 'label' => 'In production', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In production (%s)', 11 'In production (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 16 // Status "Ready to ship" 17 register_post_status( 'wc-ready-to-ship', array( 18 'label' => 'Ready to ship', 19 'public' => true, 20 'exclude_from_search' => false, 21 'show_in_admin_all_list' => true, 22 'show_in_admin_status_list' => true, 23 'label_count' => _n_noop( 24 'Ready to ship (%s)', 25 'Ready to ship (%s)', 26 'sdstudio' 27 ), 28 ) ); 29 } 30 add_action( 'init', 'sdstudio_register_multiple_statuses' ); 31 32 function sdstudio_add_multiple_statuses( $order_statuses ) { 33 $order_statuses['wc-in-production'] = 'In production'; 34 $order_statuses['wc-ready-to-ship'] = 'Ready to ship'; 35 return $order_statuses; 36 } 37 add_filter( 'wc_order_statuses', 'sdstudio_add_multiple_statuses' );
Remarque: l’identifiant du statut (le premier argument de register_post_status) commence toujours par wc-. Sans ce préfixe, WooCommerce ne prendra pas en compte le statut.
Notifications email pour les statuts personnalisés
Par défaut, WooCommerce n’envoie pas d’emails lors du passage à un statut personnalisé. Pour activer les notifications, ajoutez le filtre woocommerce_email_actions:
1 function sdstudio_add_custom_status_email( $email_actions ) { 2 $email_actions[] = 'woocommerce_order_status_wc-preparing'; 3 $email_actions[] = 'woocommerce_order_status_wc-in-production'; 4 return $email_actions; 5 } 6 add_filter( 'woocommerce_email_actions', 'sdstudio_add_custom_status_email' );
Ensuite, vous pouvez configurer le modèle d’email dans WooCommerce → Réglages → Emails, le nouveau statut apparaîtra dans la liste des déclencheurs à personnaliser. Le modèle se crée dans le thème enfant, dans le répertoire woocommerce/emails/, le fichier est nommé selon le modèle customer-<status>.php.
Extensions pour les statuts de commande: quand le code n’est pas adapté
Le code n’est pas la seule voie. Si vous ne souhaitez pas modifier functions.php ou si vous devez changer fréquemment de statuts, il existe des extensions. Deux options principales:
WooCommerce Order Status Manager, l’extension officielle de WooCommerce. Elle ajoute une interface pour créer et modifier les statuts directement depuis l’administration: WooCommerce → Réglages → Statuts de commande. Elle prend en charge les notifications email, les icônes, les couleurs et l’import/export des statuts. Payante, incluse dans certains abonnements WooCommerce.
Flexi Custom Order Status, une extension gratuite du catalogue WordPress.org. Elle propose également un éditeur visuel pour les statuts, mais avec moins de fonctionnalités. Convient aux scénarios simples: ajout d’un statut, attribution d’une couleur, activation d’un email.
Quelle voie choisir:
- Vous avez besoin d’un ou deux statuts et le code ne vous fait pas peur,
functions.phpsuffit. - Il y a beaucoup de statuts, ils changent souvent, ou le site est géré par un client sans compétences techniques, prenez une extension.
- Vous utilisez HPOS (High-Performance Order Storage), les deux approches fonctionnent. Les statuts reposent toujours sur
register_post_status(), HPOS ne les affecte pas.
La courte vidéo ci-dessus montre le processus d’ajout d’un statut personnalisé en cinq minutes, de l’installation de l’extension à la première utilisation dans les commandes.
⁉️🤔 Questions fréquentes
Le statut personnalisé fonctionne-t-il avec HPOS?
Oui, complètement. HPOS modifie la manière dont les données de commande sont stockées, mais ne touche pas au statut de publication. La fonction
register_post_status()reste le mécanisme principal, votre code fonctionnera avec HPOS activé ou désactivé.
Peut-on définir une couleur pour un statut personnalisé?
Via le code, uniquement avec des styles CSS dans l’administration: accrochez-vous à la classe
.status-wc-preparinget définissez l’arrière-plan. Plus pratique, via les extensions: Order Status Manager et Flexi proposent une sélection visuelle des couleurs sans une seule ligne de code.
Comment supprimer un statut créé?
Retirez-le de
register_post_status()et du filtrewc_order_statuses. Les commandes avec ce statut ne disparaîtront pas, elles resteront dans la base de données, mais le statut cessera de s’afficher dans la liste déroulante. Avant la suppression, déplacez toutes les commandes ayant le statut à supprimer vers un autre afin de ne pas les perdre de vue.
Comment traduire les statuts dans une autre langue?
Le paramètre
labelderegister_post_status()accepte une chaîne, indiquez le nom dans la langue souhaitée. Si le site est multilingue, enveloppez la chaîne dans un appel à__()ou_x()avec un domaine de texte, et traduisez via des fichiers.po/.mocomme tout autre texte du thème.
Le préfixe wc- est-il obligatoire?
Oui. WooCommerce filtre les statuts selon ce préfixe. Si vous enregistrez un statut sans
wc-, il n’apparaîtra pas dans l’administration des commandes. Exception, les extensions: elles ajoutent le préfixe elles-mêmes ou contournent le filtrage par des mécanismes internes.
Peut-on ajouter un statut personnalisé sans code et sans extension?
Sans code et sans extension, non. WooCommerce ne fournit pas d’interface pour créer des statuts par défaut. La voie minimale sans programmation: l’extension gratuite Flexi Custom Order Status du catalogue WordPress.org. Installation en un clic, configuration via l’administration.
Que choisir pour votre besoin
Les statuts de commande personnalisés font partie de ces mécanismes WooCommerce qu’il est facile d’ignorer tant que la boutique est petite. Mais dès que la production, une logistique par étapes ou une vérification manuelle des commandes apparaît, sans eux l’administration se transforme en chaos de notes vagues.
- Vous avez besoin d’un ou deux statuts et vous avez déjà modifié
functions.php, le code de l’étape 1 règle la tâche en cinq minutes. - Vous avez besoin d’un éditeur visuel et de réglages de couleurs pour le client, Flexi Custom Order Status (gratuit).
- Les statuts font partie d’un processus métier complexe avec des scénarios email et des dizaines d’étapes, WooCommerce Order Status Manager (extension officielle).
Évaluez quelle approche vous convient le mieux et ajoutez votre premier statut personnalisé dès aujourd’hui. Si vous utilisez une autre méthode ou connaissez une extension qui ne figure pas dans l’article, partagez-la en commentaire.



