Skip to content

Tout pour WordPress, le développement web — et plus encore

🏪 Statuts de commande WooCommerce personnalisés : comment créer et configurer

🏪 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
2function 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}
16add_action( 'init', 'sdstudio_register_custom_order_status' );
17
18// Adding status to WooCommerce list
19function sdstudio_add_custom_order_status( $order_statuses ) {
20 $order_statuses['wc-preparing'] = 'In assembly';
21 return $order_statuses;
22}
23add_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.

Statut de commande personnalisé dans le panneau d'administration WooCommerce

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:

1function 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}
30add_action( 'init', 'sdstudio_register_multiple_statuses' );
31
32function 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}
37add_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:

1function 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}
6add_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.php suffit.
  • 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-preparing et 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 filtre wc_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 label de register_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/.mo comme 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.