Marquer automatiquement comme terminé les commandes WooCommerce

Mis à jour le :

Lorsque vous gérez une boutique en ligne WooCommerce, il peut être fastidieux de devoir marquer manuellement chaque commande comme terminée une fois qu’elle a été expédiée. Heureusement, il existe une solution pratique pour automatiser ce processus et gagner du temps précieux.

En ajoutant des lignes de code sur des hooks

Nous allons aborder plusieurs techniques pour agir par le code. Ces méthodes sont réservées aux développeurs.

À chaque changement de statut

Pour marquer automatiquement les commandes comme terminées dans WooCommerce à chaque changement de statut, vous pouvez utiliser le code suivant :

/* Auto Complete Paid Orders */
function wpc_auto_complete_paid_order( $order_id ) {
if ( ! $order_id ) {
return;
}

$order = wc_get_order( $order_id );

if ( $order->has_status( 'processing' ) ) {
$order->update_status( 'completed' );
}
}
add_action( 'woocommerce_order_status_changed', 'wpc_auto_complete_paid_order' );

En agissant sur le crochet woocommerce_order_status_changed, le statut passera comme terminé aussi bien après une commande par un visiteur que par une action en back-office de la part du gestionnaire de la boutique.

Ce code doit être ajouté à votre fichier functions.php situé dans le répertoire de votre thème. Une fois en place, toutes les commandes WooCommerce qui passent de l’état En cours à Terminé seront automatiquement marquées comme terminées.

Uniquement pour une commande visiteur

Si vous ne souhaitez pas automatiser le changement pour les actions opérées en back-office, il faut utiliser un autre crochet à savoir woocommerce_thankyou. Ce dernier se déclenche une fois que le visiteur atterrit sur la page de confirmation de commande.

Pour aller plus loin qu’un simple copier / coller du précédent code, j’ai ajouté une subtilité supplémentaire : la vérification de la méthode de paiement choisie lors du passage de la commande. Ainsi, je commence par exclure les méthodes de paiement manuelles comme les virements, les chèques ou les dépôts d’espèces, puis j’automatise le changement de statut pour les autres. Je pars du principe qu’il s’agira de paiements par cartes bancaires ou Paypal et que, par conséquent, les fonds seront bien reçus.

/* Auto Complete Paid Orders */
function wpc_auto_complete_paid_order( $order_id ) {
if ( ! $order_id )
return;

$order = wc_get_order( $order_id );

// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( in_array( $order->get_payment_method(), ['bacs', 'cod', 'cheque'] ) ) {
return;
}
// For paid Orders with all others payment methods (paid order status "processing")
elseif( $order->has_status( 'processing' ) ) {
$order->update_status( 'completed' );
}
}
add_action( 'woocommerce_thankyou', 'wpc_auto_complete_paid_order', 20, 1 );

Si vous vendez des produits sans expéditions autrement dit des produits virtuels et / ou téléchargeables, pensez à désactiver l’envoi des mails de commandes en cours depuis les réglages de WooCommerce si vous n’utilisez que des paiements automatiques. Il est en effet inutile d’envoyer des e-mails pour une commande en cours et le même pour une commande terminée.

N’oubliez pas de toujours effectuer une sauvegarde de votre site et de tester sur un environnement de développement avant d’apporter des modifications à votre site en production, d’autant plus sur un site e-commerce.

En installant une extension gratuite ou premium

C’est la méthode facile pour les débutants ou si vous n’avez pas accès au code du projet.

Dans ce cas, je vous recommande l’extension Autocomplete WooCommerce Orders, disponible gratuitement sur le répertoire officiel :

  • Autocomplete WooCommerce Orders

    Extension gratuite pour WooCommerce pour changer les états de commande de manière automatisée.

    Taille du fichier :
    171.88 KB

Elle vous permettra notamment de distinguer les commandes de produits physiques de celles contenant des produits virtuels et / ou téléchargeables.

Interface de configuration pour l'extension Autocomplete WooCommerce Orders.

D’autres extensions existent et proposent des approches similaires comme Order Status Control for WooCommerce ou encore WooCommerce Order Status Control éditée par SkyVerge et disponible uniquement en version payante.

Bien entendu, ces astuces doivent constituer un point de départ pour personnaliser ces automatisations en fonction des besoins de votre projet.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

Une réponse
  1. Avatar de Jean-Michel MEYER
    Jean-Michel MEYER

    Merci beaucoup, je gère une boutique où ce n’est pas moi qui fait les envois et du coup, les commandes ne sont jamais indiquées comme terminées. Ça m’intéresse bien ces soluces.