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:
- Edit any post, page, or WooCommerce product and find the “Digital Product Passport” meta box.
- Paste valid JSON and update/publish. The plugin stores it as post meta.
- 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
jsonattribute (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|jsonto pick the default tab (defaulthtml).show_raw:true|falseto force JSON (deprecated; overridesview).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
limitis 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
jsonattribute. - Ensure the shortcode
[digital_product_passport]is present where you expect the viewer to appear.
- If you see “No Digital Product Passport JSON found.”, either save valid JSON in the meta box or pass JSON via the shortcode
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.comandhttps://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_datafilter. - 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
- Upload the
digital-product-passportfolder to the/wp-content/plugins/directory. - Activate the plugin through the “Plugins” menu in WordPress.
- 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 packageand use the artifact created indist/.
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.
ContributorsTranslate “Digital Product Passport” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.0
- Initial release.