WooCommerce Notices Fix : Corrigez votre thème sans y toucher

WooCommerce Notices Fix : Corrigez votre thème sans y toucher

WooCommerce Notices Fix est un plugin WordPress gratuit permettant d’empêcher les plugins de cache comme WP Rocket de mettre en cache les notices.

J’en ai besoin ??

Vous en avez besoin si votre thème utilise les hooks woocommerce_before_shop_loop ou woocommerce_before_single_product .

Si vous ne savez pas, alors peut-être votre thème est « WooCommerce Ready/Compatible » et il y a de fortes chances que vous ayez besoin !

C’est un fix, pourquoi ne pas proposer un patch ?

Un patch est peut-être possible, mais dans l’attente d’une revue de ma demande, puis de la résolution, pourquoi s’en priver ? Il serait dommage de voir ces messages mis en cache inutilement …

Oui alors justement, ça fait quoi ?

Et bien quand vous ajoutez un item dans votre panier, la page se recharge et une notice vous dit « Foobar a bien été ajouté dans votre panier« .

Ce message là ne pose pas de problème car il est affiché lors d’une requête HTTP POST, ces requêtes ne sont (normalement) pas mises en cache par les plugins.

Donc le message apparait, n’est pas stocké en cache, puis disparait lors du rechargement ou changement de page.

Le soucis vient de la suppression d’un item (en tout cas, pour mon cas).

Cette suppression est faite via une requête HTTP GET sans paramètre, et donc, la mise en cache est possible.

Cependant, si je me trouve sur un objet du site que je souhaite acheter, je serais dans le cache, lors de la recharge de la page, je vais encore lire le cache et je n’aurais donc pas la notice (bug #1).

WooCommerce va alors garder en mémoire cette notice jusqu’à son affichage, et il va TOUTES les garder …

Elles seront alors affichées lorsque le code PHP sera interprété, et … mise en cache … avec toutes les notices … (bug #2).

Logique, mais dommage !!

Ok, c’est quoi ton fix ?

Mon fix est simple, je vérifie si WooCommerce doit afficher des notices, celles qu’il a gardé en mémoire et si c’est le cas, je recharge cette même page en y ajoutant le paramètre ?woonotice=yes .

Le nom du paramètre est arbitraire, le but est juste d’ajouter un paramètre à la requête HTTP GET, car dans ce cas, les plugins de cache ne mettent pas (normalement) cette requête en cache !!

Les notices ont été lues de suite, pas de mises en cache, et une fois lues, WooCommerce les supprime. Bingo 🙂

Et vous, votre thème est-il compatible WooCommerce ? Avez-vous déjà eu ce bug sans savoir le résoudre ?

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum