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 (%s)', 'Litiges (%s)' )
) );
}
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 (%s)', 'Litiges (%s)' )
) );
}
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.