Digital Product Passport

Description

This plugin exists to solve a simple but common need: display a Digital Product Passport (DPP) on WordPress sites, including WooCommerce product pages, without being tied to a specific provider or API. If you have the JSON, this plugin will render it consistently, accessibly, and without sending data to third parties.

Key features

  • Vendor-agnostic: Works with any DPP JSON source. No provider lock-in.
  • WooCommerce ready: Adds a meta box on product edit screens to store the JSON.
  • Human-readable HTML view: Clean accordion layout with friendly labels (for example, “End of Life and Circularity”), tuned for Ecodesign for Sustainable Products Regulation (ESPR) naming styles.
  • JSON view: Inspect the raw JSON in a formatted code block; one-click Copy JSON.
  • Shortcode and Block: Insert the viewer with a shortcode or the included Gutenberg block.
  • Classic Editor button: “Insert Digital Product Passport” modal for quick shortcode setup.
  • Accessibility: Keyboard navigation, ARIA roles, semantic HTML (details/summary).
  • Responsive: Looks great on phones, tablets, and desktops.
  • Privacy by design: No tracking, no external calls, no cookies.
  • Translation ready: All strings can be localized.

Why this plugin

  • One viewer for WordPress and WooCommerce that is independent of provider.
  • Displays your DPP from post/product meta in a consistent way across themes.
  • Uses only the JSON you supply and renders it locally in the browser.

Usage

  • Quick start:

    1. Edit any post, page, or WooCommerce product and find the “Digital Product Passport” meta box.
    2. Paste valid JSON and update/publish. The plugin stores it as post meta.
    3. Insert the viewer where you want it to appear using either the shortcode or the block below.
  • Shortcode: [digital_product_passport]

    • By default renders the JSON saved in the meta box for that post/product.
    • You can also pass inline JSON via the json attribute (single quotes recommended around the JSON):
    • Example: [digital_product_passport json='{"id":"urn:uuid:123","type":"Product","name":"Sample"}']
    • Attributes:
    • json: Inline JSON to render (optional). If omitted, uses the saved post meta JSON.
    • view: html|json to pick the default tab (default html).
    • show_raw: true|false to force JSON (deprecated; overrides view).
    • title: Optional title displayed above the viewer.
    • limit: Number of top-level sections to show before a Show more toggle. 0 (default) shows all.
    • include: Comma-separated list of section keys/labels to include (case-insensitive; matches raw keys or humanized labels). Example: include="id,type,manufacturer".
    • exclude: Comma-separated list of section keys/labels to hide. Example: exclude="identifiers,documentation".
    • order: Comma-separated preferred order of sections. Items not listed keep their natural order after these. Example: order="id,type,manufacturers,identifiers".
    • more_label / less_label: Override the Show more/Show less button text.

    • Examples:

    • [digital_product_passport view="html" title="Digital Product Passport"]
    • [digital_product_passport view="json"]
    • [digital_product_passport limit="5" order="ID,Type,Manufacturers" exclude="Documentation"]
    • [digital_product_passport include="ID,Version,Language,Identifiers" more_label="Show all details" less_label="Show fewer"]
    • Note: The legacy [dpp] shortcode has been removed to comply with wp.org prefixing guidelines. Use [digital_product_passport].
  • Block (Gutenberg): “Digital Product Passport”

    • Add the block and (optionally) paste JSON in the block settings to override the post/product meta for that block.
    • Choose the default tab (HTML or JSON) in the block inspector.
  • Classic Editor: Use the “Digital Product Passport” toolbar button

    • Click the button, pick a title and default view (HTML or JSON), then insert. It uses the JSON saved in the meta box.
  • WooCommerce: On product edit screens, the same meta box is available. Place the [digital_product_passport] shortcode in any product description area or block to display the viewer on the product page.

  • Viewer controls (front end):

    • Tabs switch between HTML and JSON. The JSON view has a “Copy JSON” button.
    • Large passports show a Show more/less toggle when limit is set.
  • Troubleshooting:

    • If you see “No Digital Product Passport JSON found.”, either save valid JSON in the meta box or pass JSON via the shortcode json attribute.
    • Ensure the shortcode [digital_product_passport] is present where you expect the viewer to appear.

Compliance and Privacy

  • Privacy by design: No tracking, no external calls, no cookies.
  • Data handling: DPP JSON is stored as post meta and rendered client-side. Nothing is sent to third parties.
  • Security: Output is escaped and JSON is normalized server-side before embedding.
  • Accessibility: Semantic HTML with ARIA, keyboard navigation, and visible focus.
  • Performance: Minimal CSS/JS loaded only when the viewer is present.

External services

  • None required: This plugin does not connect to, depend on, or transmit data to any third‑party/external service. No data leaves your site when rendering a passport.
  • Example placeholders: The sample JSON shown in the editor includes illustrative links such as https://example.com and https://example.com/manual.pdf. These are placeholders for demonstration only; the plugin does not fetch or otherwise contact those URLs. Replace them with your own documentation links as needed.
  • Namespaces in SVG: The editor/block icon contains inline SVG markup that references the XML namespace http://www.w3.org/2000/svg. This is a namespace identifier, not a network request or external service.

No third‑party terms of service or privacy policies apply because the plugin does not use any external services.

GDPR and EU Privacy Notes

  • Personal data scope: This plugin does not collect, track, or profile users. It only renders the DPP JSON you provide. If your JSON contains personal data (for example, a contact person’s name or email), you are the controller of that data.
  • Lawful basis: Ensure you have a lawful basis under GDPR to publish any personal data included in the DPP. Prefer business contacts or shared inboxes over named individuals where possible.
  • Data minimization: Avoid including personal data unless strictly necessary for the product passport. Consider using role-based contacts (e.g., support@example.com).
  • Data location and transfers: The plugin does not perform network requests or transfer data to third countries. Any links inside your JSON are rendered as links only; the plugin does not fetch or proxy them.
  • Retention: DPP JSON is stored as post meta and retained until you edit or delete the post/product or remove the meta.
  • Data subject rights (DSR): The plugin does not store visitor-level personal data, so it does not add custom exporters or erasers. If you include personal data in DPP JSON, handle DSRs by updating/removing the JSON in your content.
  • Privacy Policy helper: The plugin registers guidance for Tools > Privacy so you can include accurate information on your site’s Privacy Policy page.
  • Redaction hooks: Developers can filter or redact fields before display using the digital_product_passport_viewer_data filter.
  • Access control: The viewer displays wherever the post/product is visible. Use WordPress visibility/roles or your membership tools to restrict access if needed.
  • Disclaimer: This is not legal advice. Consult your legal counsel to confirm compliance for your use case.

Blocks

This plugin provides 1 block.

  • Digital Product Passport

Installation

  1. Upload the digital-product-passport folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the “Plugins” menu in WordPress.
  3. Paste (or save) JSON in the “Digital Product Passport” meta box on any post/page/product, or use the block/shortcode.

Manual ZIP installs

  • From WordPress.org, the download is digital-product-passport.zip (latest stable).
  • For manual builds (e.g., GitHub release), package the plugin as digital-product-passport-<version>.zip (with dots, e.g. digital-product-passport-0.1.0.zip).
  • To generate a correctly named ZIP locally, run: composer run package and use the artifact created in dist/.

FAQ

Does this plugin require a third-party service?

No. It is provider-independent and does not call external APIs. If you have JSON, the plugin will render it.

Does the plugin validate a specific DPP schema?

It does not enforce a particular schema. It renders any valid JSON and includes humanization for common ESPR-style keys in the HTML view.

Is WooCommerce required?

No. The plugin works with WordPress posts and pages. When WooCommerce is active, a meta box is also available on product edit screens.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Digital Product Passport” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.1.0

  • Initial release.