Prix WooCommerce qui ne se met pas à jour sur le site après une édition en masse
L'éditeur en masse affiche Enregistré (Saved.), l'écran d'édition du produit montre la nouvelle valeur, et la boutique affiche toujours l'ancien prix, l'ancienne description ou des variations impossibles à sélectionner. Un prix WooCommerce qui ne se met pas à jour sur le site après une édition en masse ne signifie presque jamais que la modification a été perdue. Cela signifie que quelque chose entre la base de données et la page vue par le visiteur affiche une copie plus ancienne, ou une tout autre valeur. Confirmez où se trouve réellement la nouvelle valeur, puis passez en revue les couches ci-dessous dans l'ordre.
Vérifiez d'abord que la modification est arrivée dans la base de données
Ouvrez un produit concerné dans Produits (Products) dans wp-admin, l'éditeur de produits WooCommerce habituel, et non BEAR. Ce qu'il affiche est ce qui est stocké dans la base de données.
- L'éditeur de produits affiche aussi l'ancienne valeur. La modification n'a pas été enregistrée, et les caches ne sont pas en cause. Suivez plutôt les modifications de l'éditeur en masse ne sont pas enregistrées.
- L'éditeur de produits affiche la nouvelle valeur. Les données sont correctes. Tout ce qui suit concerne l'affichage.
L'onglet Historique (History) vous indique ce qu'une opération en masse a réellement touché. Chaque exécution en masse est enregistrée avec la liste des champs qui y ont participé ; vous pouvez donc aussi la lire directement dans la base de données (remplacez wp_ par le préfixe de vos tables) :
SELECT bulk_key, set_of_keys, products_count, state, started
FROM wp_woobe_history_bulk
ORDER BY id DESC
LIMIT 10;
Si set_of_keys de votre exécution ne liste que ["sale_price"], BEAR a écrit le prix promo et rien d'autre. Gardez cela en tête pour la section sur les variations, plus bas.
Enfin, regardez la boutique dans une fenêtre de navigation privée où vous n'êtes pas connecté. Les caches de pages ignorent généralement les administrateurs connectés ; la boutique peut donc vous sembler correcte et être fausse pour tous les visiteurs, ou l'inverse.
Les caches entre la base de données et la page de la boutique
Lorsque BEAR enregistre un produit, il vide les mêmes caches que WooCommerce vide lorsque vous appuyez sur Mettre à jour (Update) dans l'éditeur de produits : les transients du produit et les entrées du cache d'objets du produit, et de son produit parent lorsque la ligne modifiée est une variation. Les prix, le stock et les autres propriétés WooCommerce sont enregistrés par l'objet produit de WooCommerce lui-même ; le _price stocké et la fourchette de prix d'un produit variable sont donc recalculés de la manière habituelle.
Ce que BEAR ne vide pas, ce sont les caches situés en dehors de WooCommerce :
- Les caches de pages. Les extensions de cache, les caches serveur tels que Varnish ou le cache FastCGI de Nginx, et les CDN tels que Cloudflare stockent le HTML final des pages de produits et de catégories. Beaucoup purgent une page lorsqu'un article est enregistré dans l'éditeur ; une édition en masse modifie des centaines de produits d'un coup, et tous les caches ne réagissent pas à cela. Purgez l'ensemble du cache de pages, ainsi que le cache du CDN, après une grosse édition en masse.
- Les caches d'objets persistants. Redis ou Memcached conservent aussi les données d'autres extensions et du thème. Si la boutique affiche encore d'anciennes valeurs après la purge du cache de pages, videz le cache d'objets depuis le panneau de l'hébergeur ou l'extension de cache.
- Les outils WooCommerce. Dans WooCommerce > État > Outils (WooCommerce > Status > Tools), lancez Effacer les transients (Clear transients), puis Régénérer (Regenerate) à côté de Tables de recherche de produits (Product lookup tables) et à côté de Régénérer la table de recherche des attributs de produits (Regenerate the product attributes lookup table). Les tables de recherche contiennent des copies des prix, du stock et des attributs que WooCommerce utilise pour le tri par prix, le filtre de prix et le filtrage par attributs ; une table périmée se manifeste donc par un tri ou un filtrage erroné, même lorsque la page du produit est correcte.
- Votre propre navigateur. Un rechargement forcé l'écarte ; réinitialiser le cache des pages dans le navigateur en indique les touches.
Le prix est enregistré, mais la boutique en affiche un autre
Si aucun cache n'explique le problème, la boutique affiche un prix calculé à partir du prix stocké, ou pris ailleurs. BEAR écrit les prix WooCommerce stockés ; il ne décide pas de ce que la vitrine affiche.
| Ce qu'affiche la boutique | D'où cela vient |
|---|---|
| Le prix régulier alors qu'un prix promo est défini | La promotion est programmée : avec un Début de la promotion (Sale time from) futur, WooCommerce continue de vendre au prix régulier jusqu'à cette date. Voir programmer les prix promo en masse. |
| Un prix avec ou sans taxe qui diffère de celui de l'éditeur | Les réglages d'affichage des taxes dans WooCommerce > Réglages > Taxes (WooCommerce > Settings > Tax) (Afficher les prix dans la boutique (Display prices in the shop)) ajoutent ou retirent la taxe à l'affichage. |
| Un prix différent dans une autre devise | Un sélecteur de devises convertit le prix, ou utilise des prix fixes par devise stockés dans leurs propres champs. Voir modifier en masse les prix par devise. |
| Un prix différent pour les clients grossistes ou certains rôles | Les extensions de tarification par rôle et de vente en gros conservent leurs propres prix. Voir modifier en masse les prix de gros. |
| L'ancien prix dans une autre langue | Chaque traduction est un produit distinct avec son propre prix. Voir modifier en masse les prix dans toutes les langues WPML. |
| Une fourchette de prix qui ignore le prix que vous avez donné au parent | Un produit variable vend aux prix de ses variations ; modifiez les variations. Voir pourquoi le champ de prix d'un produit variable est désactivé. |
Les extensions de remise et de tarification dynamique appartiennent au même groupe : elles modifient le prix affiché à la volée. Désactivez-les un instant sur une copie de préproduction pour voir le prix stocké.
La description ne se met pas à jour : constructeurs de pages et modèles du thème
BEAR écrit la description du produit dans le champ de contenu standard de WordPress et la description courte dans l'extrait, soit les mêmes champs que l'éditeur de produits WooCommerce. Une page qui affiche autre chose ne changera pas.
Elementor
Une page produit construite avec Elementor ne lit pas le champ de contenu. Elementor stocke toute la mise en page, y compris le texte saisi dans un widget Éditeur de texte, dans son propre champ méta _elementor_data. Si la description de la page est un texte statique à l'intérieur d'un widget, aucune modification faite en dehors d'Elementor n'y apparaîtra jamais. La solution durable consiste à faire lire le produit par le widget : dans l'éditeur Elementor, cliquez sur le widget de description, ouvrez l'icône des balises dynamiques de son champ de texte et choisissez Contenu du produit (Product Content) (Description courte du produit (Product Short Description) pour le texte court), puis publiez. Les balises dynamiques font partie d'Elementor Pro. Le style du widget reste en place, et à partir de là chaque modification faite avec BEAR apparaît sur la page.
Lorsque le widget lit déjà le produit mais que la page semble encore ancienne, les fichiers générés par Elementor sont en cause : utilisez Elementor > Outils > Régénérer les fichiers et les données (Elementor > Tools > Regenerate Files & Data) (Régénérer le CSS et les données (Regenerate CSS & Data) dans les anciennes versions), qui est distinct de toute extension de cache. La description ne se met pas à jour avec Elementor fournit du code qui vide automatiquement ce cache chaque fois qu'un produit est mis à jour.
Divi et les autres constructeurs
Lorsque Utiliser le Divi Builder (Use the Divi Builder) est activé pour un produit, Divi conserve la mise en page du produit dans le champ de description. BEAR affiche alors le code de mise en page de Divi dans la colonne description (Description), et le remplacer remplace la mise en page. Pour les produits dont vous gérez la description en masse, laissez le constructeur désactivé sur le produit lui-même et concevez la page produit avec un modèle qui affiche la description WooCommerce. D'autres constructeurs conservent le texte dans leur propre champ méta ; le constructeur Avion en est un, et la FAQ Avion montre comment rattacher ce champ dans BEAR.
Thèmes et autres extensions
Certains thèmes affichent un sous-titre ou une seconde description à partir de leur propre champ méta, et les extensions de produits liés, de badges ou d'onglets personnalisés conservent leurs données dans des champs méta et mettent souvent leur affichage en cache. Si un élément de la page ignore votre modification, trouvez quel champ il lit réellement, comme décrit dans trouver la clé méta d'un produit, et modifiez ce champ. Si le champ est le bon et que l'affichage est toujours ancien, cette extension a son propre cache.
Variations impossibles à sélectionner ou disparues après une édition en masse
Deux symptômes apparaissent après des modifications de prix sur des produits variables : la page produit n'affiche que la fourchette de prix et Veuillez choisir des options du produit avant d'ajouter ce produit à votre panier. (Please select some product options before adding this product to your cart.) après le choix d'une taille, ou bien les variations et les attributs disparaissent complètement du produit.
Commencez par l'éditeur de produits. Dans l'onglet Attributs (Attributes), chaque attribut utilisé par les variations doit être présent avec Utilisé pour les variations (Used for variations) coché. Dans l'onglet variations (Variations), chaque variation doit être activée, avoir un prix et avoir une valeur pour chaque attribut. Une variation sans prix ne peut pas être achetée, et un parent sans ses attributs n'affiche aucun choix, ce qui est aussi la raison habituelle pour laquelle les variations créées en masse n'apparaissent pas dans la boutique.
Si le côté administration est complet, la vitrine lit des données périmées : videz les transients et régénérez les deux tables de recherche comme décrit plus haut, videz le cache d'objets, purgez le cache de pages, et testez avec un thème par défaut tel que Storefront.
Si les attributs ont réellement disparu, comparez avec l'Historique. Une modification en masse d'un prix promo n'écrit que le prix promo ; elle ne touche ni les attributs, ni les valeurs d'attributs des variations, ni les termes du produit. Mais chaque enregistrement d'un produit déclenche les crochets d'enregistrement habituels de WordPress et de WooCommerce, et une extension qui les écoute peut réagir à un enregistrement qui ne provient pas de l'écran d'édition du produit en effaçant des données qu'elle s'attendait à trouver dans ce formulaire. Les extensions d'échantillons, les outils de variations, les extensions d'import et de synchronisation et les générateurs de flux sont les suspects habituels. Annulez l'opération dans l'Historique, puis répétez-la sur une copie de préproduction avec seulement WooCommerce et BEAR actifs, et activez les autres extensions une par une. Isoler les extensions pendant les modifications en masse montre comment tenir définitivement une telle extension à l'écart des requêtes de BEAR.
Si la boutique affiche toujours l'ancienne valeur
- L'éditeur de produits de wp-admin affiche la nouvelle valeur ; sinon, il s'agit d'un problème d'enregistrement.
- L'Historique liste l'opération avec les champs attendus et rien de plus.
- Le cache de pages, le cache du CDN et le cache d'objets sont purgés, et la boutique est vérifiée dans une fenêtre privée.
- Effacer les transients et les deux outils de tables de recherche de WooCommerce > État > Outils ont été lancés.
- Les promotions programmées, l'affichage des taxes, la devise, la tarification par rôle et les traductions sont écartés pour les prix.
- L'élément qui affiche la description lit le champ WooCommerce, et non une copie du constructeur ou du thème.
- Avec seulement WooCommerce, BEAR et un thème par défaut sur une copie de préproduction, la modification s'affiche.
Si tout cela est vérifié et que la boutique affiche toujours les anciennes données, ouvrez un sujet sur le forum d'assistance de BEAR en indiquant l'ID du produit, le champ, ce qu'affiche l'éditeur de produits et ce qu'affiche la boutique.