30, Déc 2024
WooCommerce : ajouter des statuts de commande personnalisés

WooCommerce propose par défaut plusieurs statuts pour les commandes, comme « En cours », « Terminé », « Annulé », etc. Cependant, il se peut que vous ayez besoin d’ajouter des statuts personnalisés pour mieux suivre l’avancement des commandes dans votre boutique en ligne.

Dans ce tutoriel, nous allons vous montrer comment ajouter deux nouveaux statuts de commande : « Expédié » et « Livré au client ».

1. Préparer l’environnement

Avant de commencer, assurez-vous d’utiliser un thème enfant pour modifier votre fichier functions.php sans risquer de perdre vos modifications lors des mises à jour du thème principal.

2. Ajouter le code dans le fichier functions.php

Le code ci-dessous vous permet d’ajouter les statuts « Expédié » et « Livré au client » dans WooCommerce. Copiez ce code et collez-le dans le fichier functions.php de votre thème enfant.

Code à ajouter :

phpCopier le code/*
 * Enregistre le statut "Expédié"
 */
function register_expedie_order_status() {
    register_post_status( 'wc-expedie-shipment', array(
        'label'                     => 'Expedié',
        'public'                    => true,
        'show_in_admin_status_list' => true,
        'show_in_admin_all_list'    => true,
        'exclude_from_search'       => false,
        'label_count'               => _n_noop( 'Expedi&eacute; <span class="count">(%s)</span>', 'Expedi&eacute; <span class="count">(%s)</span>' )
    ) );
}

/*
 * Enregistre le statut "Livré au client"
 */
function register_livre_client_order_status() {
    register_post_status( 'wc-livre-shipment', array( 
        'label'                     => 'Livr&eacute; au client',
        'public'                    => true,
        'show_in_admin_status_list' => true,
        'show_in_admin_all_list'    => true,
        'exclude_from_search'       => false,
        'label_count'               => _n_noop( 'Livr&eacute; au client <span class="count">(%s)</span>', 'Livr&eacute; au client <span class="count">(%s)</span>' )
    ) );
}

/*
 * Ajoute les nouveaux statuts à la liste des statuts de commande existants
 */
function add_custom_order_statuses( $order_statuses ) {
    // Enregistre les statuts seulement une fois
    if ( ! isset( $order_statuses['wc-expedie-shipment'] ) ) {
        register_expedie_order_status();
    }

    if ( ! isset( $order_statuses['wc-livre-shipment'] ) ) { 
        register_livre_client_order_status();
    }

    // Ajoute les statuts à la liste des statuts de commandes
    $order_statuses['wc-expedie-shipment'] = 'Expedi&eacute;';
    $order_statuses['wc-livre-shipment'] = 'Livr&eacute; au client'; 

    return $order_statuses;
}

// Hook pour ajouter les statuts à la liste de WooCommerce
add_filter( 'wc_order_statuses', 'add_custom_order_statuses' );

3. Explications du code

  • Enregistrement des statuts personnalisés :
    La fonction register_post_status() est utilisée pour enregistrer de nouveaux statuts. Ici, deux statuts sont ajoutés : « Expédié » (avec le slug wc-expedie-shipment) et « Livré au client » (avec le slug wc-livre-shipment).Chaque statut a plusieurs options :
    • label : Le nom qui sera affiché dans l’interface d’administration.
    • public : Définit si le statut est public et visible dans la liste des statuts de commande.
    • show_in_admin_status_list : Définit si le statut doit être visible dans la liste des statuts dans l’administration.
    • exclude_from_search : Permet d’exclure ce statut des résultats de recherche.
    • label_count : Permet d’afficher le nombre de commandes pour ce statut.
  • Ajout des statuts à la liste des statuts existants :
    La fonction add_custom_order_statuses() permet d’ajouter les nouveaux statuts à la liste des statuts de commandes existants dans WooCommerce, juste après le statut « En cours ».
  • Hook add_filter :
    Le hook add_filter( 'wc_order_statuses', 'add_custom_order_statuses' ) permet d’intercepter la liste des statuts de commande de WooCommerce et d’y ajouter nos statuts personnalisés.

4. Tester les nouveaux statuts

Une fois que vous avez ajouté ce code dans votre fichier functions.php, vous devriez voir les nouveaux statuts « Expédié » et « Livré au client » apparaître dans l’interface d’administration des commandes WooCommerce. N’oubliez pas de vider vos caches avant de tester.

Pour tester, vous pouvez créer une commande ou modifier une commande existante, et vous pourrez sélectionner « Expédié » ou « Livré au client » dans la liste des statuts de la commande.

5. Conclusion

Vous avez maintenant deux nouveaux statuts personnalisés dans WooCommerce : « Expédié » et « Livré au client », que vous pouvez utiliser pour suivre l’avancement des commandes de manière plus précise.

En ajoutant ces statuts, vous pourrez mieux gérer les étapes de livraison et fournir une meilleure expérience utilisateur pour vos clients.

Ce code a été testé sur WordPress 6.7.1 et Woocommerce 9.3.3

Un nouveau projet WordPress/WooCommerce ? Besoin d’aide ?

Que vous lanciez un site WordPress pour votre entreprise, un blog personnel, ou une boutique en ligne, je suis là pour vous accompagner à chaque étape.

Contactez-moi, je me ferai un plaisir de vous aider à concrétiser votre projet avec professionnalisme et expertise avec un budget maîtrisé.

One thought on “WooCommerce : ajouter des statuts de commande personnalisés

  1. Super pour éviter de prendre un énième plugin.
    En revanche, les statuts appraissent bien dans l’interface d’administration des commandes, mais pas en « actions groupées » dans la liste des commandes.
    Une idée ?

    1. Bonjour Arnaud,

      Merci pour ton retour, tu as raison : le code ajoute bien les statuts dans la fiche de commande, mais WooCommerce ne les ajoute pas automatiquement dans le menu des actions groupées.

      Il suffit d’ajouter ce code à la suite du précédent :

      /**
      * Ajoute les statuts personnalisés aux actions groupées WooCommerce.
      */
      function ajouter_statuts_personnalises_actions_groupees( $actions ) {

      $actions[‘mark_expedie-shipment’] = ‘Changer le statut en Expédié’;
      $actions[‘mark_livre-shipment’] = ‘Changer le statut en Livré au client’;

      return $actions;
      }

      /**
      * Ancienne interface des commandes WooCommerce.
      */
      add_filter(
      ‘bulk_actions-edit-shop_order’,
      ‘ajouter_statuts_personnalises_actions_groupees’
      );

      /**
      * Nouvelle interface des commandes compatible HPOS.
      */
      add_filter(
      ‘bulk_actions-woocommerce_page_wc-orders’,
      ‘ajouter_statuts_personnalises_actions_groupees’
      );

      Les options « Changer le statut en Expédié » et « Changer le statut en Livré au client » apparaîtront ensuite normalement dans le menu « Actions groupées » de la liste des commandes.

      Il n’est pas nécessaire d’ajouter un traitement supplémentaire : WooCommerce reconnaît automatiquement le préfixe `mark_` et applique le statut correspondant aux commandes sélectionnées.

      Pense simplement à vider le cache de l’administration ou à recharger complètement la page après avoir ajouté le code.

Laisser un commentaire

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