Panier vide, checkout cassé : chaque bug WooCommerce coûte une vente

Un client ajoute trois produits au panier, arrive sur la page de paiement, et là : le panier est vide. Ou pire, la page checkout affiche un écran blanc, ou la passerelle refuse la carte alors qu’elle est valide. Ce ne sont pas des détails techniques abstraits : ce sont des ventes perdues, en direct, sans que tu le voies passer dans les stats (le client abandonne, point final, aucune erreur ne remonte dans Google Analytics).

La bonne nouvelle : la grande majorité des pannes WooCommerce viennent d’un nombre limité de causes, souvent cumulées. On peut les diagnostiquer méthodiquement, sans tout casser. Ce guide couvre les quatre familles de bugs qui reviennent le plus souvent — panier qui se vide, checkout cassé, passerelle qui refuse, e-mails de commande absents — avec pour chacune une résolution concrète, du réglage le plus simple au plus technique.

Pourquoi ça arrive

Avant de foncer dans les solutions, comprendre les causes évite de tourner en rond pendant des heures.

1. Vérifier le cache (cause n°1 du panier qui se vide)

C’est le premier réflexe, et il résout une bonne partie des cas. Le panier WooCommerce dépend d’une session PHP unique par visiteur : si une page de cache sert un contenu statique sur /panier/ ou /checkout/, le panier apparaît vide ou incohérent d’un rechargement à l’autre.

Un site généralement lent aggrave aussi ce symptôme : si les requêtes AJAX du panier mettent plusieurs secondes à répondre, WooCommerce peut afficher un état transitoire incohérent. Notre article sur accélérer un site WordPress lent détaille le diagnostic complet.

2. Isoler un conflit thème/plugin sur le checkout

Écran blanc, bouton “Passer la commande” qui ne réagit plus, champs de facturation qui disparaissent : ce sont les signatures classiques d’un conflit JavaScript ou PHP.

Méthode par élimination :

  1. Active le thème par défaut de WordPress (Twenty Twenty-Four) temporairement, en environnement de test si possible.
  2. Désactive tous les plugins sauf WooCommerce et la passerelle de paiement.
  3. Réactive un par un, en testant le checkout à chaque étape.
  4. Note le plugin fautif : c’est souvent un plugin de pop-up, de tracking, ou une extension de champs de checkout personnalisés qui charge un script en double.

Si le problème est apparu juste après une mise à jour automatique, consulte notre guide sur le plugin cassé après mise à jour et le rollback propre : c’est exactement le même protocole de diagnostic. Un écran totalement blanc sur /checkout/ répond au même mécanisme qu’un écran blanc de la mort WordPress classique.

3. Régler les directives PHP qui bloquent les gros paniers

Un panier avec beaucoup de variations produit, des règles de remise complexes, ou plusieurs plugins actifs simultanément au moment du checkout consomme davantage de ressources serveur que la moyenne. Si les directives PHP sont trop basses, le checkout timeout ou plante silencieusement.

Ces réglages se font dans wp-config.php (via ini_set), dans le php.ini de l’hébergement, ou dans le panel de gestion PHP si ton hébergeur en propose un (Hostinger, IONOS, Plesk…). Le détail complet, avec les syntaxes exactes selon l’endroit où tu interviens, est dans notre guide sur les directives PHP WordPress. Une erreur générique de type “erreur critique” au checkout mérite aussi de lire notre guide sur la résolution de l’erreur critique WordPress.

4. Vérifier le SSL et le contenu mixte

Une passerelle qui refuse systématiquement le paiement, alors que la carte est valide, cache parfois un problème de certificat plutôt qu’un vrai refus bancaire.

5. Diagnostiquer la passerelle elle-même

Si le SSL est propre et qu’aucun conflit plugin n’apparaît, le problème vient souvent de la configuration de la passerelle (Stripe, PayPal, CB en direct) :

6. Réparer les e-mails de commande absents

Le paiement passe, mais ni le client ni toi ne recevez de confirmation : c’est un problème d’envoi d’e-mail, pas de WooCommerce lui-même. Par défaut, WordPress envoie via la fonction mail() de PHP, systématiquement mal notée par les filtres anti-spam.

La solution durable : configurer un envoi via SMTP authentifié (Resend, ou ton fournisseur d’e-mail pro). Deux guides couvrent ce point en détail selon ta situation : configurer Resend pour l’envoi d’e-mail et réparer les e-mails WordPress qui n’arrivent pas. Si tu utilises un formulaire de contact en parallèle du tunnel de vente, le même souci touche souvent Contact Form 7. Vérifie aussi tes enregistrements SPF, DKIM et DMARC : sans eux, même un SMTP bien configuré peut finir en spam, comme expliqué dans notre guide sur la délivrabilité e-mail.

Tableau récapitulatif

SymptômeCause probableSolution
Panier qui se videCache sur page panier/checkoutExclure ces pages du cache
Écran blanc au checkoutConflit thème/pluginDésactivation par élimination
Checkout qui charge indéfinimentmemory_limit / max_execution_time trop basAjuster dans wp-config.php ou panel hébergeur
Champs de commande perdusmax_input_vars insuffisantMonter à 3000
Passerelle refuse systématiquementSSL expiré / contenu mixteRenouveler certificat, nettoyer les ressources HTTP
Commande en attente malgré paiement réussiWebhook passerelle absentDéclarer le webhook côté Stripe/PayPal
Aucun e-mail de confirmation reçuPas de SMTP, fonction mail() nativeConfigurer SMTP + SPF/DKIM/DMARC

FAQ

Pourquoi mon panier WooCommerce se vide-t-il uniquement sur mobile ?

C’est généralement un problème de cookies bloqués par les navigateurs mobiles en navigation privée, ou par un plugin de consentement RGPD trop restrictif qui bloque les cookies de session avant validation. Vérifie que ton plugin de gestion des cookies autorise les cookies “essentiels” (session panier) par défaut, sans attendre le consentement marketing.

Le checkout fonctionne en localhost mais pas en production, pourquoi ?

Les causes les plus fréquentes sont un certificat SSL absent ou mal configuré en production, des clés API de passerelle encore en mode test, ou une différence de version PHP entre les deux environnements qui expose un conflit de plugin invisible en local.

Faut-il désactiver le cache complètement sur une boutique WooCommerce ?

Non, ce serait contre-productif pour la vitesse du site. Il faut simplement exclure les pages dynamiques (panier, checkout, mon compte) du cache, tout en gardant le cache actif sur les fiches produits et pages statiques.

Un conflit de plugin peut-il faire perdre des ventes sans erreur visible ?

Oui, c’est même le cas le plus fréquent. Un script JS en conflit peut simplement empêcher le bouton “Passer la commande” de réagir, sans message d’erreur explicite. Le client referme l’onglet, frustré, et tu ne vois jamais l’incident dans tes logs serveur.

Comment savoir si le problème vient de WooCommerce ou de mon thème premium ?

Active temporairement un thème par défaut de WordPress et reproduis le parcours d’achat. Si le problème disparaît, le thème est en cause — souvent un conflit avec un builder comme Elementor ou WPBakery, dont les problématiques sont proches de celles décrites dans nos guides sur Elementor bloqué au chargement et sur WPBakery en panne.

Quand passer la main à un pro

Ces réglages résolvent la majorité des blocages courants. Mais si le problème touche simultanément plusieurs de ces symptômes (panier instable, e-mails absents, paiement refusé par intermittence), c’est souvent le signe d’un socle technique fragile — hébergement sous-dimensionné, plugins accumulés sans cohérence, ou migration bâclée d’une agence à l’autre. À ce stade, un audit complet du taux de conversion et de la stabilité technique vaut mieux qu’un rustinage plugin par plugin : c’est le rôle d’une maintenance structurée, plutôt que des correctifs isolés qui reviennent chaque trimestre.

Ce problème, Peechy s'en occupe

Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout — hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.

Confier mon site à Peechy