Quésaco ?


Quand on gère une boutique WooCommerce, on tombe vite sur un petit détail qui peut faire perdre du temps au quotidien : certaines commandes payées immédiatement passent en statut « en cours » au lieu de « terminé ».
Sur le papier, ce comportement a du sens, surtout lorsqu’il faut encore préparer un colis ou vérifier un stock. Mais dans certains cas — vente de produits virtuels, envoi automatique d’un accès, téléchargement, prestation livrée sans intervention — ce statut intermédiaire n’apporte pas grand-chose.

C’est justement dans ce genre de situation qu’un simple filtre WooCommerce peut vous simplifier la vie. Avec quelques lignes de code, vous pouvez faire en sorte que les commandes réglées par carte bancaire, Stripe ou tout autre moyen de paiement instantané soient directement marquées comme terminées après validation du paiement.

Dans cet article, je vais vous montrer comment fonctionne ce snippet, à quel moment l’utiliser, et pourquoi il peut rendre le suivi de vos commandes beaucoup plus fluide sur votre site WordPress.

Pourquoi WooCommerce laisse certaines commandes en cours


Quand une commande est payée via Stripe, carte bancaire ou un autre moyen de paiement immédiat, WooCommerce applique par défaut le statut « en cours » sur beaucoup de boutiques.
Ce fonctionnement convient bien aux produits physiques, car il laisse le temps de préparer l’expédition.

Mais sur certains sites, ce n’est pas toujours adapté. Si vous vendez :

  • des produits virtuels ;
  • des téléchargements ;
  • des prestations livrées automatiquement ;
  • des licences ou accès à un espace membre ;
  • des services sans intervention manuelle ;

alors garder la commande en processing ajoute une étape inutile dans votre gestion quotidienne.

Le résultat, c’est souvent une liste de commandes “en cours” qui sont pourtant déjà finalisées côté client.

Le principe du snippet


L’idée du code est simple : au moment où WooCommerce confirme le paiement, on intercepte le statut qu’il souhaite appliquer.

Si WooCommerce veut passer la commande en processing, le snippet vérifie son ancien état.
Si la commande était auparavant en attente, en échec ou en attente de validation, alors on force directement le nouveau statut à completed.

Cela permet de fluidifier le traitement sans modifier le reste du tunnel d’achat.

Le code à ajouter dans votre site

Voici le snippet à utiliser tel quel dans le fichier functions.php de votre thème enfant ou dans une extension de snippets.

<?php// Gestion du passage de statut à "Terminé" au lieu de "En cours" (pour les achats directs : CB, Stripe... et non pas pour les différes : Chèque...)
add_filter( 'woocommerce_payment_complete_order_status', 'gbo_rfvc_update_order_status', 10, 2 );
function gbo_rfvc_update_order_status( $order_status, $order_id ) {
$order = new WC_Order( $order_id );
if ( 'processing' == $order_status && ( 'on-hold' == $order->status || 'pending' == $order->status || 'failed' == $order->status ) ) {
return 'completed';
}
return $order_status;
}

L’intérêt ici, c’est que le comportement reste ciblé sur les paiements validés automatiquement.
Les paiements différés comme le chèque ou le virement conservent leur logique habituelle.

Dans quels cas utiliser cette modification


J’utilise souvent cette approche sur des boutiques WordPress qui ne nécessitent aucune action après paiement.

Quelques cas fréquents :

  • vente de fichiers PDF ou ZIP ;
  • génération automatique de licence ;
  • envoi d’e-mail avec pièce jointe ;
  • réservation confirmée automatiquement ;
  • commande de prestation numérique.

Dans ces contextes, le client a déjà reçu ce qu’il attend juste après le paiement.
Le statut “terminé” reflète donc mieux la réalité.

Le bon emplacement pour ajouter ce code


Le plus propre reste de placer ce snippet dans un thème enfant WordPress afin d’éviter toute perte lors d’une mise à jour du thème principal.

Si vous préférez une solution plus souple, une extension comme Code Snippets fonctionne aussi très bien pour ce type de personnalisation.

L’avantage est double :

les tests sont plus simples avant mise en production.
Le statut “terminé” reflète donc mieux la réalité.

le code reste séparé du thème ;

vous pouvez l’activer ou le désactiver facilement ;

Ce qu’il faut vérifier avant de l’utiliser


Avant de mettre ce snippet sur votre boutique, prenez quelques minutes pour valider votre logique métier.

Si vos produits sont physiques, passer trop tôt en “terminé” peut poser problème pour :

  • les exports logistiques ;
  • les connecteurs transporteurs ;
  • le suivi de préparation ;
  • certains ERP ;
  • vos automatisations e-mail.

Sur une boutique de produits numériques, en revanche, cette adaptation s’intègre très naturellement.

Un petit gain de confort au quotidien


Ce genre de snippet ne change pas l’expérience client de manière visible, mais côté administration, le confort est réel.
Votre liste de commandes devient plus lisible, les commandes réellement à traiter ressortent mieux, et vos automatisations WooCommerce peuvent s’appuyer sur un statut plus cohérent.

C’est le type d’ajustement simple qui améliore la gestion d’une boutique WordPress sans alourdir le site avec une extension supplémentaire.