# DataFirefly Digital Product Passport — Documentation

> Introduction Le plugin DataFirefly Digital Product Passport ajoute à WooCommerce tout ce qu'il faut pour générer un Passeport Numérique Produit (DPP) conforme au Règlement européen Écoconception pour des produits durables…

- Page: <https://www.datafirefly.com/documentation/dfdpp-doc/>
- Langue: fr
- Mis à jour le: 2026-07-01
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfdpp-doc/index.md), [es](https://www.datafirefly.com/es/documentation/dfdpp-doc/index.md), [de](https://www.datafirefly.com/de/documentation/dfdpp-doc/index.md), [it](https://www.datafirefly.com/it/documentation/dfdpp-doc/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfdpp-doc/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfdpp-doc/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfdpp-doc/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Introduction

Le plugin **DataFirefly Digital Product Passport** ajoute à WooCommerce tout ce qu'il faut pour générer un **Passeport Numérique Produit (DPP)** conforme au Règlement européen Écoconception pour des produits durables (**ESPR**). Ce passeport devient progressivement obligatoire dans l'Union européenne à partir de 2027, en commençant par le textile, les batteries et l'électronique grand public, avant de s'étendre à la quasi-totalité des produits mis sur le marché européen.

Concrètement, chaque produit WooCommerce gagne un identifiant unique stable (UUID v4), un QR code natif, une URL publique propre du type `/dpp/{uuid}`, un registre complet des composants et matériaux, une timeline de traçabilité, et une API REST publique. Aucun appel externe : tout est généré côté serveur.

**À qui ça s'adresse ?**
Toute boutique WooCommerce vendant en UE : textile, mode, batteries, électronique, ameublement, matériaux de construction, cosmétiques, jouets, détergents, lubrifiants ou peintures. Si tu ne fais pas partie des premières vagues, tu as tout intérêt à structurer tes données dès maintenant.

## Prérequis

- WordPress 6.0 ou supérieur
- WooCommerce 7.0 ou supérieur, activé
- PHP 7.4 minimum (testé jusqu'à PHP 8.3)
- Un permalien autre que « Simple » (Réglages → Permaliens)

## Installation

1. Télécharge le ZIP `dfdpp-1.0.0.zip` depuis ton compte DataFirefly.
2. Va dans **Extensions → Ajouter → Téléverser une extension**, sélectionne le ZIP, puis **Installer maintenant**.
3. Clique sur **Activer**. Les 5 tables custom sont créées automatiquement (`wp_dfdpp_passports`, `wp_dfdpp_components`, `wp_dfdpp_materials`, `wp_dfdpp_suppliers`, `wp_dfdpp_events`) et les options par défaut sont posées.
4. Si l'URL publique `/dpp/{uuid}` ne répond pas immédiatement, va dans **Réglages → Permaliens** et clique sur **Enregistrer les modifications** (sans rien changer) pour forcer le flush.

## Configuration globale

Rends-toi dans **WooCommerce → Passeport DPP**. Cet écran regroupe tous les réglages du plugin.

### URL publique et QR Code

- **Préfixe d'URL** : par défaut `dpp`, ce qui donne `tondomaine.com/dpp/{uuid}`. Change-le si tu préfères `passeport`, `product-passport` ou autre. Pense à visiter Réglages → Permaliens après modification.
- **Taille du QR** : facteur de zoom de 1 à 10. La valeur 6 (par défaut) produit environ 240 px de côté.
- **Marge** : nombre de modules blancs autour du QR (4 par défaut).
- **Correction d'erreur** : L / M / Q / H. Reste sur **H** si le QR sera imprimé sur étiquette : jusqu'à 30 % du code peut être abîmé sans compromettre la lecture.
- **Format préféré** : PNG (raster, universel) ou SVG (vectoriel, meilleur pour l'impression grand format).

### Identité fabricant par défaut

Renseigne ici les informations que tu ne veux pas retaper produit par produit :

- Raison sociale, adresse, pays de fabrication
- Pays par défaut appliqué aux composants et matériaux
- Catégorie ESPR par défaut (textile, batterie, électronique, ameublement, etc.)

### Affichage public

Cinq bascules indépendantes contrôlent ce que tes clients voient sur la page publique du passeport :

- Empreinte carbone (activée par défaut)
- Fournisseurs (**désactivée par défaut** — données sensibles)
- Composition matière (activée)
- Réparabilité et pièces détachées (activée)
- Timeline de traçabilité (activée)

Tu peux activer les fournisseurs pour renforcer ton discours transparence radicale, mais valide-le au préalable avec tes acheteurs et tes juristes : c'est une information contractuellement sensible.

### Publication automatique

Si tu coches cette option, chaque passeport passe automatiquement en _published_ lorsque le produit WooCommerce lui-même est publié. Utile pour un catalogue de plusieurs centaines de produits gérés par une équipe non technique. Sinon, chaque passeport doit être publié manuellement — ce qui garantit un contrôle final.

### Branding

- **Couleur d'accent** : format hexadécimal (ex. `#0f172a`). Elle s'applique au hero, aux titres et aux boutons de la page publique.
- **URL du logo** : affiché en haut de la page publique. Utilise une image transparente (PNG ou SVG) — elle sera inversée sur fond sombre.

## Créer un passeport pour un produit

Ouvre n'importe quel produit dans WooCommerce. Un nouvel onglet **Passeport DPP** apparaît dans le panneau de données produit (à côté de Général, Inventaire, Livraison, etc.). Il regroupe 8 sections.

### Onglet Identification

Le point d'entrée obligatoire pour publier :

- **Statut** : Brouillon / Publié / Archivé. Seul _Publié_ rend l'URL publique accessible.
- **Catégorie ESPR** : détermine la structure de données que les auditeurs européens s'attendent à trouver. Choisis _textile_, _battery_, _electronics_, _furniture_, _iron_steel_, _aluminium_, _tyres_, _detergents_, _paints_, _lubricants_, _chemicals_, _cosmetics_, _toys_, _construction_ ou _general_.
- **GTIN / EAN / UPC** : le code-barres commercial international.
- **Référence modèle**, **Numéro de lot**, **Numéro de série** : renseigne les champs applicables à ton produit.
- **Fabricant** : nom, adresse, pays (préremplis depuis les réglages globaux si tu les as configurés).
- **Date de fabrication** et **Site de fabrication** (ville, usine ou atelier).

### Onglet Durabilité et empreinte

- **Empreinte carbone** : valeur numérique, unité (kgCO2e par défaut) et méthodologie de calcul de référence (_PEF_, _ISO 14067_, _GHG Protocol_). Ne renseigne l'empreinte que si tu peux la justifier avec une méthodologie documentée — c'est le point le plus scruté par les audits.
- **Indice de réparabilité** : note sur 10.
- **Durée de vie prévue** en années.
- **Durée de garantie** en mois (obligation d'au moins 24 mois en UE pour les biens de consommation).
- **Disponibilité pièces détachées** en années.
- **Contenu recyclé** en pourcentage.
- **Contenu recyclable** en pourcentage.

### Onglet Instructions

Quatre champs riches acceptant du HTML basique (paragraphes, listes, liens) :

- **Utilisation** : conseils pour tirer le meilleur parti du produit et allonger sa durée de vie.
- **Entretien** : lavage, séchage, stockage.
- **Recyclage** : filière de recyclage, tri sélectif, points de collecte.
- **Fin de vie** : que faire quand le produit n'est plus utilisable.

### Onglet Conformité

- **Substances préoccupantes (SCIP / REACH)** : liste des substances de la liste candidate REACH présentes à plus de 0,1 % en poids. Format libre, on recommande une liste à puces avec le nom et le numéro CAS.
- **Matières dangereuses** : mention des classes de danger applicables (CLP, GHS).
- **Certifications et labels** : OEKO-TEX, GOTS, GRS, Ecolabel, EPEAT, etc.

### Onglet Composants

Registre à plat des composants qui constituent le produit. Pour chaque composant, tu ajoutes :

- Nom (obligatoire)
- Type : parmi une liste prédéfinie (tissu principal, doublure, semelle, boucle, fermeture, etc.)
- Poids en grammes
- Nom du fournisseur (jamais exposé publiquement sauf si tu actives la bascule dédiée)
- Pays d'origine sur 3 caractères ISO 3166 alpha-3 (ex. `FRA`, `ITA`, `CHN`)
- Recyclable : oui / non
- Remplaçable : oui / non (pertinent pour l'électronique, l'ameublement)

Les composants sont sauvegardés en AJAX : chaque ajout ou suppression est immédiat, sans recharger la page. Le produit doit exister (au moins en brouillon) pour que le passeport puisse recevoir des composants.

### Onglet Matériaux

Registre matière plus granulaire, avec les codes normalisés :

- **Code matériau** : liste déroulante avec les principaux codes ISO 11469 / ISO 1043 pour les plastiques (`PET`, `PP`, `PE`, `PVC`, `PS`, `PA`, etc.), ISO 1833 pour les textiles (`WO` laine, `CO` coton, `PL` polyester, `VI` viscose, `EL` élasthanne, etc.), DIN 6120 pour les métaux, et les chimies batteries (`Li-ion`, `LFP`, `NMC`, `NCA`, `NiMH`, `Pb`).
- **Nom personnalisé** : si le code prédéfini ne convient pas.
- **Pourcentage** : part de ce matériau dans le produit (jusqu'à 4 décimales).
- **Recyclé** + **% recyclé** : est-ce qu'il s'agit d'un contenu recyclé, et si oui à quelle proportion.
- **Renouvelable** : matière d'origine biologique renouvelable.
- **N° CAS** : identifiant CAS de la substance (pour les substances chimiques régulées).

### Onglet Traçabilité

Timeline des événements-clés du cycle de vie. Chaque événement associe une date, un type, un acteur, un lieu et une description. Les types disponibles couvrent tout le cycle :

- Production
- Contrôle qualité
- Transport
- Import / Export
- Distribution
- Vente
- Réparation
- Reconditionnement
- Recyclage
- Fin de vie

Le minimum syndical pour un audit ESPR : une production initiale et une vente. Idéalement tu documentes aussi les étapes de contrôle qualité et de distribution. Les événements post-vente (réparation, recyclage) peuvent être ajoutés au fil de l'eau via l'API REST par un partenaire externe.

### Onglet QR Code

Cet onglet devient actif dès que le produit est enregistré une première fois. Il affiche :

- Le QR code généré (aperçu en data-URI)
- L'UUID du passeport
- L'URL publique cliquable
- Trois boutons de téléchargement : PNG, SVG et JSON brut

## Publier un passeport

Un passeport en statut _Brouillon_ n'est pas accessible publiquement — l'URL renvoie une 404. Pour le publier :

1. Ouvre le produit, va sur l'onglet **Passeport DPP → Identification**.
2. Passe **Statut** sur _Publié_.
3. Clique sur **Mettre à jour** en haut à droite du produit.

La date de première publication est mémorisée automatiquement dans `published_at`. Un passeport publié peut être remis en Brouillon ou passé en Archivé à tout moment.

## Page publique du passeport

L'URL de la forme `tondomaine.com/dpp/8f3a2c1d-4b5e-6f7a-8b9c-0d1e2f3a4b5c` ouvre une page responsive avec :

- Un **hero** avec le nom du produit, la catégorie ESPR, le logo de marque et l'image du produit
- Un bandeau **identifiants** (UUID, GTIN, modèle, lot, série, SKU)
- Une carte **fabricant** avec adresse et date de production
- Une carte **durabilité et empreinte** avec les métriques sous forme de tuiles
- Les tables **composants** et **matériaux** (selon les bascules d'affichage)
- Les **instructions** (utilisation, entretien, recyclage, fin de vie)
- La **conformité réglementaire** (certifications, substances, matières dangereuses)
- Une **timeline de traçabilité** verticale avec dates et lieux
- Une **sidebar QR code** avec téléchargement PNG / SVG / JSON
- Un bloc **JSON-LD schema.org Product** automatiquement injecté pour le SEO et l'interopérabilité

Sur la fiche produit publique WooCommerce, un bloc discret invite les visiteurs à consulter le passeport, avec un QR miniature. Ce bloc est ajouté automatiquement au-dessous du résumé produit (hook `woocommerce_after_single_product_summary`, priorité 25).

### Formats alternatifs

La même URL accepte deux suffixes :

- `/dpp/{uuid}?dfdpp_format=json` ou `/dpp/{uuid}.json` : retourne le payload JSON complet, y compris le bloc JSON-LD.
- `/dpp/{uuid}?dfdpp_format=qr` ou `/dpp/{uuid}/qr` : télécharge directement le QR code PNG.

## API REST

Tous les endpoints sont exposés sous le namespace `dfdpp/v1`.

### Endpoints publics

- `GET /wp-json/dfdpp/v1/passport/{uuid}` — retourne le payload JSON complet du passeport.
- `GET /wp-json/dfdpp/v1/passport/by-product/{product_id}` — même chose mais recherché par identifiant produit WooCommerce.
- `GET /wp-json/dfdpp/v1/passport/{uuid}/qr` — retourne le QR code en SVG vectoriel.

Ces endpoints ne renvoient que les passeports en statut _Publié_.

### Endpoints authentifiés

Nécessitent une authentification Application Password ou OAuth et une capability `manage_woocommerce` ou `edit_products` :

- `PATCH /wp-json/dfdpp/v1/passport/{product_id}` — met à jour partiellement les champs d'un passeport.
- `POST /wp-json/dfdpp/v1/passport/{product_id}/publish` — publie le passeport (raccourci sans avoir à passer par l'admin).

L'API REST est le canal idéal pour synchroniser tes passeports depuis un PIM, un ERP ou une chaîne de production automatisée. Elle permet aussi à un partenaire externe (atelier de réparation, filière de recyclage) d'ajouter des événements de traçabilité au fil du cycle de vie du produit.

## Personnalisation

### Surcharger la page publique

Copie `public/templates/dpp-public.php` depuis le plugin vers un dossier `dfdpp/` à la racine de ton thème actif. Le plugin utilisera prioritairement ce fichier, ce qui te permet de refondre entièrement le rendu sans toucher au plugin. La logique de récupération des données reste inchangée : tu disposes des variables `$passport` et `$data` exactement comme dans le template original.

### Filtre du payload JSON

Le filtre `dfdpp_passport_payload` te permet d'ajouter ou modifier des champs dans la charge JSON exposée. Exemple : ajouter un champ propriétaire _internal_reference_ visible uniquement pour ton ERP.

```
add_filter( 'dfdpp_passport_payload', function ( $data, $passport ) {
    $data['custom'] = array(
        'internal_reference' => get_post_meta( $passport->product_id, '_erp_ref', true ),
    );
    return $data;
}, 10, 2 );
```

### Bloc sur la fiche produit

Le bloc invitant à consulter le passeport sur la fiche produit publique WooCommerce peut être déplacé, désactivé ou remplacé en manipulant le hook :

```
// Le retirer complètement
remove_action( 'woocommerce_after_single_product_summary', array( dfdpp()->frontend, 'render_product_dpp_link' ), 25 );

// Le placer ailleurs, par exemple au-dessus du bouton Ajouter au panier
add_action( 'woocommerce_single_product_summary', array( dfdpp()->frontend, 'render_product_dpp_link' ), 25 );
```

## Traductions

Le plugin est livré avec une traduction française complète (`languages/dfdpp-fr_FR.po` et `.mo`) et un fichier template `dfdpp.pot` (291 chaînes uniques) pour traduire vers d'autres langues avec Poedit ou tout outil compatible gettext.

Polylang Pro et WPML sont supportés pour la traduction des contenus produit (nom, description, catégorie ESPR). Le passeport reste attaché au produit source, ce qui garantit une seule source de vérité pour les données de conformité tout en permettant un affichage multilingue de la page publique.

## Compatibilité HPOS

Le plugin déclare explicitement sa compatibilité avec le stockage haute performance des commandes WooCommerce (_High-Performance Order Storage_). Il ne stocke aucune donnée dans le custom post type `shop_order` — les 5 tables dédiées sont indépendantes. Tu peux activer HPOS sans crainte de rupture avec le plugin.

## FAQ et dépannage

### L'URL publique renvoie une 404

Trois causes possibles :

- Le passeport est en statut Brouillon ou Archivé — passe-le en Publié.
- Les rewrite rules n'ont pas été flushées — va dans Réglages → Permaliens et enregistre (sans rien changer).
- Un permalien « Simple » est actif — passe à « Titre de la publication » ou tout autre format non simple.

### Le QR code ne s'affiche pas

Vérifie que ton hébergeur autorise l'écriture du répertoire `wp-content/uploads/` et que l'extension GD est activée dans PHP (nécessaire pour la génération PNG). Si tu es en environnement contraint, force le format SVG dans les réglages : il ne dépend pas de GD.

### Comment fournir la traçabilité à un partenaire externe ?

Utilise l'API REST. Crée un Application Password dédié au partenaire dans son compte utilisateur WordPress (Utilisateurs → Profil → Application Passwords), puis fournis-lui la documentation d'un endpoint `PATCH` pour qu'il pousse ses propres événements de traçabilité au fil de l'eau.

### Puis-je générer les QR codes en masse ?

Oui, via WP-CLI. Un script personnalisé peut boucler sur les produits et appeler `DFDPP_QRCode::output_png()` ou `::as_svg()` pour générer les fichiers. Contacte le support si tu veux qu'on te fournisse un WP-CLI command clef en main pour ton catalogue.

### Est-ce que ça marche avec les produits variables ?

Oui, le passeport est attaché au produit parent. Si tu as besoin d'un passeport distinct par variation (typique pour l'électronique où chaque configuration a une empreinte carbone différente), contacte-nous pour discuter d'une extension.

## Désinstallation

La **désactivation** simple du plugin conserve toutes les données. Tes passeports restent en base, prêts à être réactivés.

La **désinstallation complète** (bouton Supprimer sur la page des extensions) déclenche `uninstall.php`, qui :

- Supprime les 5 tables custom
- Supprime toutes les options `dfdpp_*`
- Nettoie les transients éventuels
- Flushe les rewrite rules

La désinstallation est irréversible : sauvegarde ta base ou fais un export JSON de tes passeports (via l'API REST) avant de désinstaller si tu souhaites récupérer les données plus tard.

## Support

Le support technique est assuré par e-mail en français et en anglais. Écris à [support@datafirefly.com](mailto:support@datafirefly.com) en précisant la version du plugin, la version de WordPress et WooCommerce, ainsi qu'un extrait des logs si tu as un message d'erreur PHP.
