Le panier WooCommerce se vide tout seul
Un client ajoute un produit, change de page, et le panier est vide : c’est presque toujours un problème de persistance de session, pas un bug du panier WooCommerce lui-même. WooCommerce suit le contenu du panier via des cookies et une session PHP ; dès que l’un des deux n’est pas transmis de façon fiable d’une page à l’autre, le panier paraît se vider tout seul.
Comment je procède
-
Vérification des cookies de panier
Je vérifie dans le navigateur que les cookies woocommerce_cart_hash et wp_woocommerce_session_… sont bien posés après l’ajout au panier, et qu’ils persistent d’une page à l’autre sans être effacés.
-
Test avec le cache désactivé
Je reproduis le parcours avec tout cache de page coupé. Si le panier se comporte normalement dans ce cas, la cause la plus fréquente est confirmée : une page mise en cache et servie en version déconnectée à un visiteur qui a pourtant un panier actif.
-
Contrôle du domaine effectif
Je vérifie qu’aucune page du parcours d’achat ne charge en www quand le reste du site est en non-www, ou en http au lieu de https : ce type d’écart change le domaine effectif du cookie et casse la session en silence.
-
Vérification du stockage des sessions PHP
Sur un hébergement mal configuré, en particulier en répartition de charge entre plusieurs serveurs, le stockage des sessions PHP peut ne pas être partagé correctement entre les requêtes, ce qui vide le panier sans raison apparente côté WooCommerce.
-
Recherche d’un plugin qui vide le panier
Je vérifie si un plugin de vente croisée, de relance de panier abandonné ou de promotion appelle WC()->cart->empty_cart() à un moment inattendu : plus rare, mais un cas réel que j’ai déjà rencontré.
Ce que je traite régulièrement
- Le client ajoute un produit, revient sur le site plus tard, et le panier est redevenu vide
- Le panier se vide en changeant de page, mais pas systématiquement
- Le problème n’apparaît qu’avec www devant l’adresse, ou uniquement sans www
- Le panier disparaît juste après l’activation d’un plugin de cache ou après un changement d’hébergeur
- Impossible de reproduire le bug en navigation privée, seulement en navigation normale
Ce qui casse une session panier
WooCommerce suit un panier avec deux cookies : woocommerce_cart_hash, qui détecte si le contenu du panier a changé, et wp_woocommerce_session_…, qui relie le navigateur à une session PHP côté serveur où le contenu réel est stocké. Si l’un des deux n’est pas transmis correctement à chaque page, WooCommerce ne retrouve plus le panier associé au visiteur.
La cause la plus fréquente, de loin, est un plugin de cache de page (ou un cache imposé par l’hébergeur) qui sert une version statique et déconnectée d’une page à un visiteur qui a pourtant un cookie de session actif. Le panier, le compte client et le tunnel de commande doivent rester dynamiques, jamais mis en cache comme une page vitrine.
Un écart de domaine, www contre non-www, ou http contre https, change lui aussi le domaine effectif auquel le cookie est rattaché : le panier semble se vider en passant d’une variante de l’adresse à l’autre, alors qu’il s’agit en réalité de deux sessions distinctes.
Pages liées
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.