Woocommerce

Comment ajouter un nouveau statut de commande avec Woocommerce ?

Jean Rémi16 décembre 20222 min de lecture

Woocommerce propose nativement des statues de commandes. Vous avez besoin de créer un nouveau statut de commande pour votre site e-commerce ? J’ai la solution dans cet article.

Comment ajouter un nouveau statut de commande avec Woocommerce ?

Woocommerce propose nativement des statues de commandes, comme par exemple : « En cours, terminer, annuler » etc.


Cependant vous allez peut-être avoir besoin de créer un nouveau statut de commande en fonction des besoins de votre site.

 

Il existe de nombreux modules gratuits comme payant pour faire cela, mais si vous ne voulez pas ajouter encore un module sur votre WordPress, j’ai la solution pour vous.

 

Ajoutez le code ci-dessous dans votre fichier functions.php de votre thème enfant

				
					function register_litiges_order_status() {

    register_post_status( 'wc-litiges-shipment', array(

        'label'                     => 'Litiges',

        'public'                    => true,

        'show_in_admin_status_list' => true,

        'show_in_admin_all_list'    => true,

        'exclude_from_search'       => false,

        'label_count'               => _n_noop( 'Litiges <span class="count">(%s)</span>', 'Litiges <span class="count">(%s)</span>' )

    ) );

}

add_action( 'init', 'register_litiges_order_status' );

function add_litiges_to_order_statuses( $order_statuses ) {

    $new_order_statuses = array();

    foreach ( $order_statuses as $key => $status ) {

        $new_order_statuses[ $key ] = $status;

        if ( 'wc-processing' === $key ) {

            $new_order_statuses['wc-litiges-shipment'] = 'Litiges';

        }

    }

    return $new_order_statuses;

}

add_filter( 'wc_order_statuses', 'add_litiges_to_order_statuses' );
				
			

Détaillons un peu ce code

Pour cet exemple, nous allons créer un statut supplémentaire, qui va s’appeler : Litige

Dans cette partie, nous pouvons voir que nous enregistrons la fonction :

				
					function register_litiges_order_status() {

   
				
			

Puis nous attribuons le label, qui sera « Litiges » avec plusieurs variables de visibilités.

				
					register_post_status( 'wc-litiges-shipment', array(

        'label'                     => 'Litiges',

        'public'                    => true,

        'show_in_admin_status_list' => true,

        'show_in_admin_all_list'    => true,

        'exclude_from_search'       => false,

        'label_count'               => _n_noop( 'Litiges <span class="count">(%s)</span>', 'Litiges <span class="count">(%s)</span>' )

    ) );

}
				
			

Et pour finir, nous ce nouveau statut directement dans la partie des commandes.

				
					add_action( 'init', 'register_litiges_order_status' );

function add_litiges_to_order_statuses( $order_statuses ) {

    $new_order_statuses = array();

    foreach ( $order_statuses as $key => $status ) {

        $new_order_statuses[ $key ] = $status;

        if ( 'wc-processing' === $key ) {

            $new_order_statuses['wc-litiges-shipment'] = 'Litiges';

        }

    }

    return $new_order_statuses;

}

add_filter( 'wc_order_statuses', 'add_litiges_to_order_statuses' );
				
			

Testé sur WordPress 6.1.1 et Woocommerce 7.2.2

Un nouveau projet WordPress ? Besoin d’aide ?

Contactez-moi ou visitez mon site et je me ferais un plaisir de vous aider. 

Vous avez un projet de développement web ?

Le meilleur moyen de savoir si nous pouvons vous aider, c'est d'en parler. Réservez un appel de 30 minutes avec notre équipe. Nous échangeons sur votre besoin, nous identifions les pistes possibles, et nous vous donnons une vision claire des prochaines étapes. Sans engagement.

Nous écrire