Wo WooCommerce Intermédiaire

dfomnibus-woo — Conformité Directive Omnibus WooCommerce

Installation, moteur de calcul du prix de référence, capture automatique, réglages, tableau de bord de défense, planificateur de gel, import et dépannage du plugin dfomnibus-woo.

Mis à jour Version du module 1.0.0

Le plugin DataFirefly Omnibus Compliance for WooCommerce met votre boutique en conformité avec la directive européenne 2019/2161, dite Omnibus, applicable depuis le 28 mai 2022. Il capture l’historique de prix dès son activation, calcule le prix de référence légal en appliquant les règles que presque personne n’implémente, et vous fournit le dossier à remettre en cas de contrôle.

Compatibilité : WordPress 6.2 minimum, WooCommerce 8.0 minimum, PHP 8.0 minimum (compatible 8.1, 8.2 et 8.3). HPOS déclaré compatible. Produits simples et variables, multi-devise, WPML et Polylang. Aucune dépendance externe, aucun CDN.

Installation

  1. Téléchargez l’archive dfomnibus-woo-1.0.0.zip depuis votre espace client DataFirefly.
  2. Dans l’administration WordPress, allez dans Extensions, Ajouter une extension, Téléverser une extension, puis activez le plugin. WooCommerce doit être actif.
  3. La capture démarre immédiatement : trois tables sont créées et un premier instantané est planifié dans les minutes qui suivent l’activation.
  4. Ouvrez WooCommerce, Omnibus Compliance pour configurer l’affichage et activer votre licence.

Trois tables créées : wp_dfwomni_price_history pour les relevés de prix, wp_dfwomni_display_log pour le journal des mentions servies, wp_dfwomni_license_cache pour le cache de licence. Le préfixe wp_ est remplacé automatiquement par le vôtre.

Le moteur de calcul

Le calcul du prix de référence est isolé dans un moteur sans dépendance à WordPress, couvert par des tests unitaires. Les règles sont évaluées dans cet ordre.

1. Séries de réductions successives

Quand des promotions s’enchaînent sans que le produit revienne à son prix non réduit, la référence légale reste le prix pratiqué avant la première réduction de la série. Elle n’est jamais recalculée à chaque nouvelle promotion. Le plugin détecte ces enchaînements, gèle la référence et affiche l’explication en back-office, par exemple « référence gelée depuis le 12 octobre, promotions successives en cours ».

Une série est bornée dans le temps. Au-delà de 60 jours par défaut, réglable de 30 à 120 jours, on considère que le prix réduit est devenu le prix normal du produit : la règle générale des 30 jours s’applique de nouveau, et le rapport de conformité signale une promotion permanente.

2. Cas normal, fenêtre ancrée

Le prix de référence est le plus bas pratiqué sur l’intervalle qui va de 30 jours avant le début de la réduction jusqu’au début de la réduction. La fenêtre est ancrée au démarrage de la promotion : elle ne glisse pas jour après jour pendant que la promotion tourne, contrairement à un minimum glissant qui finirait par avaler le prix promotionnel lui-même.

3. Produit récemment commercialisé

Pour un produit mis en vente depuis moins de 30 jours, la référence est le prix le plus bas depuis sa mise en vente, et la mention affichée en boutique indique la durée réelle de commercialisation, comme l’exige le texte.

4. Données insuffisantes

Si l’historique capturé ne couvre pas la fenêtre légale pour un produit qui n’est pas récent, aucune référence n’est renvoyée et rien n’est affiché. Une référence jamais réellement capturée ne doit jamais être affichée ni reconstruite après coup.

Conséquence pratique : installez le plugin avant votre saison promotionnelle, pas le jour même. L’historique ne se reconstruit pas rétroactivement, c’est votre preuve et il ne peut être constitué qu’en avance.

Capture automatique

Deux mécanismes tournent en parallèle.

  • Instantané quotidien : la tâche dfwomni_daily_snapshot parcourt le catalogue et enregistre l’état des prix. Si le dernier passage remonte à plus de 24 heures, un rattrapage ponctuel dfwomni_catchup_snapshot est planifié automatiquement.
  • Capture événementielle : chaque changement réel de prix est enregistré, qu’il vienne de l’éditeur produit, d’une modification rapide ou en masse, d’un import CSV, d’une mise à jour REST ou CRUD, d’un outil de repricing, ou du démarrage et de la fin des promotions programmées.

Une ligne d’historique correspond à un changement de prix réel, les doublons sont écartés. Les prix sont stockés bruts avec leur contexte fiscal et leur devise, jamais le prix déjà mis en forme.

Fiabiliser le cron sur une boutique à faible trafic

WP-Cron ne s’exécute qu’au passage d’un visiteur. Sur une boutique peu fréquentée, configurez un vrai cron système :

*/15 * * * * wget -q -O /dev/null "https://votre-boutique.com/wp-cron.php?doing_wp_cron"

Le tableau de bord affiche un avertissement si le dernier instantané date de plus de 48 heures.

Réglages

Onglet Réglages de la page WooCommerce, Omnibus Compliance.

  • Afficher la référence sur : produits en promotion uniquement, ce qui correspond au minimum légal, ou tous les produits disposant d’un historique, mode transparence réservé à la licence Pro.
  • Position de la ligne : juste sous le prix, ou après le bloc prix dans le résumé produit. Choisissez la seconde option si votre thème réécrit le rendu du prix.
  • Graphique 30 jours : propose la courbe de prix sur la fiche produit, en canvas natif d’environ 3 Ko, sans script externe. Fonctionnalité Pro.
  • Textes personnalisés : deux gabarits, la ligne standard avec le marqueur {price} et la ligne produit récent avec {price} et {days}. Laissez vides pour utiliser les textes traduits fournis en français, anglais, allemand, espagnol et italien. Fonctionnalité Pro.
  • Exclusions : identifiants de produits et de catégories qui n’affichent jamais la mention, utile pour des prix négociés ou du B2B.
  • Seuils d’audit : nombre de jours au-delà duquel une promotion est signalée comme permanente, 60 par défaut, et âge maximal d’une série de réductions successives, 60 par défaut.
  • À la désinstallation : case à cocher pour supprimer aussi l’historique capturé. Décochée par défaut, et c’est volontaire.

Tableau de bord

L’onglet Tableau de bord réunit trois blocs.

Santé de la capture

Nombre de relevés capturés, nombre de produits suivis et date du dernier instantané quotidien, avec l’alerte évoquée plus haut si le cron ne passe plus.

Rapport de conformité

Audit calculé en direct sur vos données les plus récentes, qui liste les produits dont l’affichage actuel pourrait être contesté lors d’un contrôle. Quatre statuts :

  • Référence manquante : le produit est en promotion sans référence capturée, la remise est affichée sans prix antérieur défendable.
  • Promotion permanente : la promotion tourne depuis trop longtemps, le prix réduit est devenu le prix normal et la remise annoncée devient contestable.
  • Produit récent : information, l’affichage indique correctement la durée réelle de commercialisation.
  • Référence gelée (série) : promotions successives en cours, la référence ne sera pas recalculée tant que le produit ne sera pas revenu à un prix non réduit.

Exports horodatés

Deux exports CSV générés en flux, nommés avec le domaine et l’horodatage UTC :

  • Historique de prix : l’intégralité des relevés capturés.
  • Journal d’affichage : quelle référence a été réellement servie, quand, et sur quelle fiche produit.

Le rapport de conformité, les exports et le journal d’affichage font partie de la licence Pro. La capture, elle, n’est jamais bridée.

Historique de prix

L’onglet Historique de prix affiche les relevés produit par produit, avec la variation, la devise, le prix régulier, le prix promotionnel, le prix effectif et la source du relevé. Quand une référence est gelée, la date et la raison du gel sont indiquées.

Planificateur de gel

Votre première promotion verrouille la référence de la suivante : tout prix pratiqué dans les 30 jours qui précèdent une date clé abaisse la remise que vous pourrez annoncer ce jour là. Le planificateur raisonne à rebours.

Choisissez une date commerciale dans la liste fournie (Black Friday, Cyber Monday, Noël, soldes d’hiver et d’été, Saint-Valentin, fête des mères et des pères) ou saisissez une date personnalisée. Le planificateur vous indique la date limite à laquelle votre dernière promotion doit se terminer pour préserver la remise visée, et la période pendant laquelle chaque prix pratiqué alimente la fenêtre légale. Un calendrier abonnable regroupe toutes les échéances. Fonctionnalité Pro.

Import d’un historique existant

Si une autre extension a déjà enregistré vos prix, ces données sont irremplaçables. L’onglet Import analyse la structure des tables de votre base, sans se baser sur le nom de l’extension, et repère celles qui contiennent un identifiant produit, un prix et une date, avec détection optionnelle d’une colonne de variation. Les tables système de WooCommerce et d’Action Scheduler sont ignorées.

Le tableau affiche chaque table candidate, les colonnes détectées et le nombre de lignes. L’import est idempotent : les doublons et les lignes inexploitables sont comptés séparément et ne polluent pas votre historique. Fonctionnalité Pro.

Licence

L’onglet Licence affiche le plan en cours, la clé masquée et la date de dernière vérification. Saisissez la clé reçue par e-mail après l’achat, au format DFWOM-PRO-XXXX-XXXX-XXXX-XXXX, puis cliquez sur Activer.

Achat unique, 12 mois de mises à jour, remboursement sous 30 jours, code source non chiffré, une boutique par licence. Si le serveur de licences est injoignable, le plugin conserve toutes ses fonctionnalités pendant 7 jours puis revient au niveau Free, sans jamais casser votre boutique. La capture de l’historique ne s’arrête jamais, quel que soit le plan.

Ce que la licence Pro débloque

  • Affichage sur tous les produits disposant d’un historique, et pas seulement sur les produits en promotion
  • Textes de mention personnalisés
  • Graphique de prix sur 30 jours
  • Tableau de bord de défense, rapport de conformité et journal d’affichage
  • Exports CSV horodatés
  • Planificateur de gel
  • Import d’un historique existant

Restent toujours actifs, quelle que soit la licence : la capture complète de l’historique, l’affichage de la mention sur les produits en promotion et la consultation de l’historique en back-office.

Dépannage

Aucune mention ne s’affiche

Vérifiez dans l’ordre :

  1. Le produit est il réellement en promotion ? Par défaut la mention ne s’affiche que sur les produits remisés.
  2. L’historique capturé couvre t il la fenêtre requise ? Sur une installation récente, la réponse est souvent non, et c’est le comportement voulu.
  3. Le produit ou sa catégorie figurent ils dans les exclusions ?
  4. Le tableau de bord signale t il un instantané trop ancien ? Si oui, fiabilisez le cron.

La mention s’affiche à un endroit inattendu

Basculez la position sur après le bloc prix dans le résumé produit. Certains thèmes réécrivent le rendu du prix et absorbent l’insertion faite juste sous celui ci.

Le dernier instantané date de plus de 48 heures

WP-Cron dépend du trafic. Mettez en place le cron système indiqué plus haut, ou vérifiez que la constante DISABLE_WP_CRON n’est pas activée sans cron système en remplacement.

Le graphique n’apparaît pas

Le graphique fait partie de la licence Pro et doit être activé dans les réglages. Vérifiez aussi que l’historique du produit contient assez de points sur les 30 derniers jours.

L’import ne détecte aucune table

La détection est structurelle : une table candidate doit contenir une colonne d’identifiant produit, une colonne de prix décimale et une colonne de date. Les tables natives de WooCommerce et d’Action Scheduler sont volontairement écartées.

FAQ

La référence est elle recalculée à chaque nouvelle promotion ?

Non, et c’est le point le plus mal compris de la règle. Tant que le produit ne revient pas à un prix non réduit, la référence reste le prix pratiqué avant la première réduction de la série.

Les produits variables sont ils gérés ?

Oui. La référence est calculée par variation et non au niveau du produit parent, et la mention se met à jour lorsque le visiteur change de variation.

Que se passe t il à la désinstallation ?

Les réglages, le cache de licence et sa table sont supprimés. L’historique de prix et le journal d’affichage sont conservés par défaut, car ces données ne peuvent pas être reconstituées. Cochez explicitement l’option de purge dans les réglages si vous voulez tout effacer.

Le plugin ralentit il la boutique ?

Non. La capture écrit une petite ligne par changement de prix réel, l’affichage lit une plage indexée courte avec cache, et le graphique représente environ 3 Ko de code natif sans aucune requête externe.

Le plugin gère t il le multi-devise ?

Oui. Chaque relevé porte sa devise, l’historique n’est donc jamais converti après coup.

Changelog

1.0.0 – 10 août 2026

  • Version initiale
  • Double capture : instantané quotidien avec rattrapage et capture événementielle des changements de prix
  • Prix de référence sur fenêtre de 30 jours ancrée au début de la réduction
  • Règle des réductions successives avec gel de la référence sur le prix pré-série
  • Mention adaptée aux produits récemment commercialisés, avec durée réelle de commercialisation
  • Planificateur de gel et calendrier des échéances
  • Tableau de bord de défense, rapport de conformité, exports horodatés et journal d’affichage
  • Import structurel d’un historique de prix existant
  • Référence par variation, relevés multi-devise
  • Traductions FR, EN, DE, ES, IT, compatibilité WPML et Polylang, compatibilité HPOS
Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support