Easy Digital Downloads dispose d'un système de panier d'achat natif qui permet aux visiteurs de la boutique d'ajouter plusieurs articles à leur panier avant de passer à la caisse. Cependant, un certain nombre de configurations de l'hôte, du site et du navigateur peuvent perturber cette fonctionnalité et faire apparaître le panier vide au moment du paiement.
Dans de rares cas, en raison d'une configuration du serveur, des paramètres d'hébergement ou d'un conflit avec d'autres plugins, votre panier peut apparaître vide après y avoir ajouté un article. Dans cet article, nous expliquerons certaines des raisons pour lesquelles cela peut se produire et ce que vous pouvez faire pour résoudre le problème.
Plugins de mise en cache
Les plugins de mise en cache sont une cause très fréquente car ils sont très largement utilisés. Leur objectif est simple : les plugins de mise en cache accélèrent les temps de chargement de votre site Web en stockant certaines données du site Web pour un accès facile lorsqu'elles sont demandées par le navigateur. Bien que ce soit un excellent moyen de rendre votre site rapide et de réduire le trafic du serveur, quelques légères modifications peuvent être nécessaires pour que votre panier fonctionne correctement.
Désactiver la mise en cache sur votre page de paiement
Étant donné que les informations sur votre page de paiement sont spécifiques à un seul visiteur, elles ne doivent jamais être mises en cache, car cela pourrait produire des résultats indésirables pour vos clients. L'ajout d'articles au panier, leur suppression, le calcul des totaux du panier et toutes les autres fonctions de la page de paiement doivent refléter l'état réel des données de la page chaque fois qu'elle est chargée. Ne pas désactiver la mise en cache sur votre page de paiement peut entraîner un certain nombre de problèmes, notamment l'impossibilité pour les clients d'acheter ou des commandes contenant des totaux, des taxes ou des produits incorrects.
Si vous utilisez un plugin tel que W3 Total Cache, WP Super Cache ou un autre plugin similaire, vous devez le configurer pour éviter la mise en cache sur la page de paiement.
Si vous utilisez Varnish comme couche de mise en cache, vous voudrez peut-être passer à notre section sur l'utilisation de Varnish avec Easy Digital Downloads.
Cloudflare
Cloudflare est un service très puissant pour améliorer les performances de votre boutique et sécuriser votre entreprise, et nous l'utilisons sur ce même site sur lequel vous vous trouvez actuellement. Pour configurer Cloudflare afin qu'il fonctionne avec votre boutique propulsée par Easy Digital Downloads, vous n'avez besoin d'apporter que quelques modifications minimales.
Règles de page

Créez les règles de page suivantes dans vos paramètres Cloudflare. Les règles de page peuvent être ajoutées en cliquant sur Règles → Règles de page → Créer une règle de page.
Tout d'abord, depuis votre tableau de bord de site Cloudflare, trouvez le menu « Règles » sur la gauche, développez-le et cliquez sur « Règles de page ».
C'est ici que vous pouvez gérer vos différentes règles de page et les organiser par ordre de priorité. Il est préférable de garder votre règle de page de paiement en haut de cette liste, afin qu'elle soit la première à être traitée et qu'aucune autre règle n'affecte votre paiement.
Pour créer une règle de page, cliquez sur le bouton « Créer une règle de page »

Lors de la création d'une règle de page, vous devez définir les URL auxquelles cette règle s'applique et les règles que vous souhaitez que Cloudflare applique. Pour les pages de paiement, nous voulons toujours contourner la couche de mise en cache de Cloudflare, nous utiliserons donc le paramètre « Niveau de cache » et le réglerons sur « Contourner ». Cela signifie que Cloudflare enverra directement toute requête pour la page de paiement à votre serveur.

Lors de l'ajout de cette règle de page, assurez-vous que l'URL se termine par une barre oblique et le caractère *. Cela garantira qu'elle correspond à tous les paramètres de chaîne de requête tels que les codes de réduction et que d'autres fonctionnalités du paiement d'EDD ne seront pas affectées.
Mise en cache du serveur Web
Bien que moins courant, la mise en cache côté serveur peut poser un problème tout aussi important pour votre système de panier d'achat. De nombreux hébergeurs Web proposent des services de mise en cache auxquels vous souscrivez et que vous configurez vous-même. D'autres, tels que
WP Engine, pratiquent une mise en cache agressive qui est préconfigurée pour vous. Bien que ces outils puissent aider votre boutique à mieux performer et à convertir plus d'utilisateurs, nous devrons peut-être apporter quelques ajustements pour un équilibre entre performance et fiabilité.
WP Engine
Si vous hébergez votre site sur WP Engine, vous pourriez rencontrer des problèmes de paniers vides lors de la visite de la page de paiement. Cela est dû à une mise en cache agressive des pages (ce qui est une bonne chose !), mais cela peut être facilement résolu en demandant à WP Engine de configurer une exception de cache spéciale pour votre page de paiement.
Pour ce faire, soumettez simplement un ticket de support à WP Engine via leur portail de support et demandez-leur d'exclure votre page de paiement de la mise en cache.
Votre page de paiement est celle qui contient le shortcode [download_checkout] et qui est enregistrée dans Téléchargements > Paramètres :

Pour vous faciliter la tâche, n'hésitez pas à copier et coller cet exemple de ticket :
Bonjour !
Mon site utilise le plugin e-commerce Easy Digital Downloads et nous rencontrons des problèmes avec la mise en cache des pages et la page de paiement. L'équipe Easy Digital Downloads nous a demandé de vous demander de placer une exception de cache sur notre page de paiement.
Pourriez-vous s'il vous plaît ajouter l'URL suivante à la liste d'exceptions ?
https://YOURSITE.com/{put your checkout page URL here}
Merci !
Remarque : Bien que la page de paiement ne soit peut-être plus mise en cache, vous pourriez toujours avoir un problème avec le lien « Supprimer » de votre panier qui ne supprime pas correctement les articles du panier. Si cela se produit, demandez à WP Engine de « exclure les cookies ‘edd_saved_cart’ et ‘edd_items_in_cart’ de la mise en cache » et cela devrait corriger le lien.
EasyEngine/Nginx
Si vous hébergez votre site avec EasyEngine/Nginx et que vous utilisez la mise en cache Redis, vous devrez trouver et modifier votre fichier redis.conf (ou redis-php7.conf) et ajouter edd_items_in_cart|. Ainsi, par exemple, vos exceptions pourraient ressembler à ceci :
# Don't use the cache for logged in users or recent commenter
if ($http_cookie ~* "edd_items_in_cart|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; }
Varnish
Si vous rencontrez des paniers vides lors de l'utilisation d'un serveur de mise en cache Varnish avec votre boutique Easy Digital Downloads, vous pourriez essayer d'utiliser les règles suivantes pour aider à prévenir cela :
Dans votre configuration Varnish
// Tells Varnish to pass through on the checkout page
if (req.url ~ "checkout") { return (pass); }
// Tells Varnish to pass through on any request with edd_action in the query string
if (req.url ~ "edd_action") { return (pass); }
// Tells Varnish to pass through on any request with add_to_cart in the query string
if (req.url ~ "add_to_cart") { return (pass); }
// Tells Varnish to pass through if any cookies with `edd` are found
if (req.http.cookie ~ "(^|;s*)edd") { return (pass); }
Certains tutoriels et configurations Varnish suggèrent de réorganiser les arguments de la chaîne de requête pour optimiser les taux de succès du cache. Cette fonctionnalité de Varnish peut entraîner l'échec des liens de téléchargement de fichiers générés par Easy Digital Downloads, en raison de la vérification des liens sécurisés qu'elle utilise. Si vous souhaitez utiliser cette technique de mise en cache, nous avons rédigé un guide utile sur comment prendre en charge la modification de la chaîne de requête avec Easy Digital Downloads, tout en donnant aux clients l'accès aux téléchargements de fichiers sécurisés.
Le serveur ne prend pas en charge les sessions PHP
Les sessions PHP sont conçues pour offrir à vos visiteurs une expérience plus personnalisée. La possibilité d'ajouter des articles à un panier d'une page à l'autre, puis de voir tous les articles du magasin dans le panier au moment du paiement est aussi personnelle que possible pour un nouveau visiteur qui n'a partagé aucune information avec votre site.
Certains serveurs ou hôtes ne prennent pas en charge l'utilisation du 'gestionnaire de session' natif de PHP. Easy Digital Downloads stocke les informations du panier de vos visiteurs dans leur session PHP, cependant, lorsque cette fonctionnalité de PHP n'est pas disponible, cela peut produire des paniers vides car les données du panier ne peuvent pas être sauvegardées entre les vues de page.
Easy Digital Downloads prend en charge le stockage des données de session dans la base de données et l'utilisation de cookies pour atténuer ce problème. L'utilisation de cette version de la gestion de 'session' n'est pas aussi rapide que l'utilisation des sessions PHP car elle repose sur la base de données, cependant elle peut résoudre le problème du panier vide.
Pour activer les sessions de base de données, allez dans Téléchargements > Paramètres > Divers > Général et définissez la Gestion des sessions sur Sessions de base de données.
Afin de maintenir les performances optimales de votre base de données, Easy Digital Downloads nettoie les sessions abandonnées deux fois par jour, en utilisant les événements WP Cron de WordPress.
Fichier admin-ajax.php bloqué
WordPress inclut dans son cœur un fichier appelé admin-ajax.php qui est largement utilisé dans WordPress, y compris par Easy Digital Downloads. Bloquer l'accès à ce fichier peut causer des problèmes avec le comportement de votre panier et d'autres aspects de votre site WordPress. Il n'est jamais suggéré de bloquer l'accès à ce fichier.
Si vous utilisez des plugins de sécurité ou si vous avez des paramètres de sécurité agressifs sur votre serveur, désactivez-les temporairement et vérifiez à nouveau la fonctionnalité du panier. Si vos paramètres de sécurité bloquent ce fichier, votre panier ne fonctionnera pas correctement.
Pour plus d'informations sur admin-ajax.php bloqué, consultez la documentation complète.
/wp-admin/ bloqué
Il existe des plugins qui bloquent l'accès à /wp-admin/ à des fins de sécurité, et ceux-ci bloquent parfois aussi l'accès au fichier admin-ajax.php mentionné précédemment, causant les problèmes énumérés ci-dessus.
Pour tester si c'est le problème, désactivez temporairement les plugins de blocage d'administration. Si le problème est résolu, vous saurez que c'était ce plugin.
Cookies du navigateur désactivés
EDD utilise des cookies pour stocker des informations avec les sessions et compter les articles dans votre panier. Si les cookies de votre navigateur sont désactivés, le système de panier d'achat pourrait ne pas fonctionner comme prévu.
Paramètres d'URL
Comme mentionné précédemment, Easy Digital Downloads utilise les Sessions et les Cookies pour pouvoir sauvegarder les données du panier d'un visiteur entre les visites de pages, afin qu'ils puissent avoir une expérience unique sur votre boutique. Les cookies sont des informations sur l'utilisateur qui sont stockées dans son navigateur. Pour des raisons de sécurité, les cookies utilisés par Easy Digital Downloads définissent l'URL de la boutique lors de leur création. Il est important que votre site WordPress soit configuré pour maintenir la même URL entre la page où vous ajoutez un article à votre panier et votre page de paiement.
Cela inclut la partie http ou https de l'URL. Si vous tentez d'ajouter un produit au panier sur une page utilisant http et que votre page de paiement est sécurisée avec un SSL, s'affichant en https, votre panier sera vide car la page de paiement sécurisée n'a pas accès au cookie ajouté par la page non sécurisée que vous avez précédemment utilisée pour ajouter l'article au panier.
Nous suggérons que l'ensemble de votre boutique soit chargé sous une forme sécurisée avec https dans l'URL, y compris les paramètres d'URL de votre WordPress. Si votre hébergeur ne vous fournit pas de certificat SSL pour votre boutique, vous pouvez en obtenir un et le faire installer par votre hébergeur. Assurez-vous que votre hébergeur puisse configurer votre site pour qu'il ne se charge qu'en https, mais s'il ne le peut pas, vous pouvez toujours utiliser Really Simple SSL pour forcer WordPress à charger votre site avec la version sécurisée SSL à chaque fois.
Assurez-vous que tout ce que vous avez défini dans Réglages → Général est utilisé dans tous les liens de votre site.

Dans certains cas, nous avons constaté que des plugins ou scripts tiers installés modifiaient automatiquement l'adresse du site ou l'adresse WordPress après un certain temps. Vérifiez que l'adresse de votre site n'est pas modifiée afin que votre boutique fonctionne comme prévu.
Règles .htaccess
Le fichier .htaccess est utilisé par le serveur pour acheminer correctement les requêtes des utilisateurs vers vos pages. WordPress dispose d'un ensemble de règles par défaut sur lesquelles nous nous appuyons pour que le panier fonctionne correctement. Si vous rencontrez des problèmes avec votre panier vide, essayez d'utiliser la configuration par défaut du .htaccess définie par WordPress.
Conflits de plugins connus
Bien que rares, il peut y avoir des conflits entre le panier d'achat Easy Digital Downloads et d'autres plugins WordPress. Bien que nous tentions de les contourner avec notre code, parfois nous ne pouvons pas et, par conséquent, nous maintenons une liste de plugins avec lesquels nous ne pouvons garantir un bon fonctionnement avec Easy Digital Downloads. Si vous rencontrez un conflit de plugin connu, veuillez contacter notre équipe de support avec autant d'informations détaillées que possible sur le conflit et nous serons heureux d'examiner le problème pour vous.
