Releases: marcelbest/json-ld-php-for-wordpress
v1.0.1
What's New in v1.0.1
A small correctness fix for the BlogPosting date fields.
WordPress writes post_modified on every draft save, so a post drafted before publishing could end up with a dateModified earlier than its datePublished. The BlogPosting node now clamps dateModified so it can never precede datePublished.
- Fixed:
dateModifiedno longer precedesdatePublishedin theBlogPostingnode
v1.0.0
What's New in v1.0.0
First public release — a single, fully cross-linked Schema.org @graph per page for classic WordPress themes, in one PHP file with no plugin and no build step.
Extracted from the classic theme on marcelbest.com and generalised for reuse: the site-specific coupling (an SEO plugin's options, a custom social-links widget, hardcoded identity and paths) was replaced with WordPress-core defaults and filters, so the file runs on any classic theme without a dependency. Full walkthrough: https://marcelbest.com/webdesign/2026/json-ld-fuer-wordpress-ohne-plugin/
- One
<script type="application/ld+json">block per page, with all nodes cross-linked by stable@ids — no duplicated, orphaned markup - Context-aware nodes:
WebSiteandPersonalways;BlogPostingon single posts;Blogon the front page;CollectionPageon archives;WebPageon static pages;BreadcrumbListon multi-level paths BlogPostingwith aSpeakableSpecification(headline + lead) for answer engines; optional fields (image,articleSection,keywords,description) only emitted when real data exists- Automatic
FAQPagenode derived server-side from a Core Accordion block (WordPress 6.9+), linked to theBlogPosting - Everything site-specific is overridable via filters — person identity, social
sameAs, description, Speakable selectors, FAQ block, blog URL, breadcrumbs, plus a full-graph escape hatch