Title: Codedication Schema Blocks
Author: codedication
Published: <strong>19 Maajo, 2026</strong>
Last modified: 19 Agoosto, 2026

---

Raadi kaabayaal

![](https://ps.w.org/codedication-schema-blocks/assets/banner-772x250.png?rev=3537180)

![](https://ps.w.org/codedication-schema-blocks/assets/icon-256x256.png?rev=3537180)

# Codedication Schema Blocks

 Qore [codedication](https://profiles.wordpress.org/codedication/)

[Soo Rog](https://downloads.wordpress.org/plugin/codedication-schema-blocks.2.0.0.zip)

 * [Faahfaahin](https://so.wordpress.org/plugins/codedication-schema-blocks/#description)
 * [Dibu-eegisyo](https://so.wordpress.org/plugins/codedication-schema-blocks/#reviews)
 *  [Rakibaad](https://so.wordpress.org/plugins/codedication-schema-blocks/#installation)
 * [Horumarinta](https://so.wordpress.org/plugins/codedication-schema-blocks/#developers)

 [Taageero](https://wordpress.org/support/plugin/codedication-schema-blocks/)

## Sharraxaad

#### Structured data that lives with your content

Most schema plugins park your structured data somewhere else: a metabox, a separate
settings screen, a template file. The page says one thing, the markup says another,
and nobody notices until a rich result quietly disappears.

Schema Blocks works the other way round. You write the recipe, the FAQ, the product
details or the job ad as blocks in the editor, and those same blocks emit the JSON-
LD. What a visitor reads and what a search engine parses come from the same source,
so they cannot drift apart.

#### Nine blocks for the things people actually publish

**FAQ** – questions and answers in a native accordion. Visitors get a real disclosure
widget, machines get `FAQPage` / `Question` / `Answer` markup they can read.

**Review** – [review snippets](https://developers.google.com/search/docs/appearance/structured-data/review-snippet)
with a 1-5 rating for products, books, movies, restaurants, local businesses or 
any `Thing`. Pros, cons, rating explanation, and book details (author, publisher,
ISBN, page count, external identity URLs) when the reviewed item is a book.

**Recipe** – [recipe rich results](https://developers.google.com/search/docs/appearance/structured-data/recipe)
built from inner blocks: ingredients, instructions and nutrition are content on 
the page, not hidden fields. Plus prep, cook and total time, yield, category, cuisine,
keywords and rating.

**Product** – [product rich results](https://developers.google.com/search/docs/appearance/structured-data/product)
with price, currency, availability, condition, SKU, GTIN and MPN, brand, manufacturer
and aggregate rating.

**Event** – [event rich results](https://developers.google.com/search/docs/appearance/structured-data/event)
with start and end dates, attendance mode, status, a physical or virtual location,
organizer and ticket offers.

**Local Business** – [local business markup](https://developers.google.com/search/docs/appearance/structured-data/local-business)
with subtype (Restaurant, Store, ProfessionalService and dozens more), address, 
geo coordinates, telephone, price range, cuisine served and opening hours.

**How-To** – ordered steps with images, estimated cost, total time, tools and supplies,
described in the page itself.

**Job Posting** – [job posting rich results](https://developers.google.com/search/docs/appearance/structured-data/job-posting)
with employment type, hiring organization, location, posting and validity dates,
and base salary.

**Breadcrumb** – [breadcrumb markup](https://developers.google.com/search/docs/appearance/structured-data/breadcrumb)
generated from your site hierarchy, or a manual trail when the hierarchy does not
match the story. Where the block is used it replaces the site-wide trail, so a page
never emits two.

#### Configure the site once

The Settings screen holds everything that belongs to the whole site, with a live
JSON-LD preview and a completeness ring next to it:

 * **Site Identity** – Organization or Person, with name, logo, description, contact
   details, address, social profiles and founding year.
 * **WebSite** – site name, alternate name, description, language and the search
   action.
 * **Breadcrumbs** – the site-wide `BreadcrumbList`, with separator and home label.
 * **Content** – map each public post type to Article, Blog posting or nothing. 
   Posts default to Article, so a normal blog is marked up correctly the moment 
   you activate the plugin.
 * **Blocks** – switch off the blocks you do not use. They leave the inserter and
   stop emitting anything.
 * **Advanced** – Wikidata ID, Wikipedia URL, legal name, VAT ID and employee count
   for organizations; job title, credentials and ORCID, LinkedIn or ResearchGate
   profiles for people; areas of expertise for either, emitted as `knowsAbout`. 
   There is also a switch that suppresses the site-level nodes when another plugin
   already emits them.
 * **Validgraph** – the optional validation connection described below.

#### Your authors are people, not strings

An author name typed into a field is text. An author entity is something a search
engine can recognise across your site and beyond it.

Every WordPress user gets a **Schema – author profile** section on their profile
screen:

 * Job title, honorific prefix, credentials and areas of expertise.
 * `sameAs` URLs: LinkedIn, ORCID, Wikidata, a personal site.
 * Where they studied (`alumniOf`) and which colleagues they work with, picked from
   the other authors who have a profile, so the `Person` nodes reference each other.
 * An avatar override, and two opt-ins that tie the author to the site organization:
   member of it (`worksFor`) and founder of it.

Those fields enrich the `Person` node referenced by every article that user writes,
down to `givenName` and `familyName` taken from their WordPress first and last name.
Their author archive is typed as `ProfilePage`, and the Organization node lists 
the authors who opted in as `employee` and `founder`: the full roster on the front
page, the current author elsewhere.

This is about being unambiguous, which is what E-E-A-T signals are made of. Nobody
can promise you a ranking from it.

#### Per-post control when the site-wide rule is wrong

A **Schema** panel in the document sidebar overrides the defaults for a single post
or page:

 * **Content type** – Article, Blog posting, News article, or none, whatever the
   post type mapping says.
 * **Page type** – About page, Contact page, Profile page, Item page or Collection
   page.

There is also a smart rule you never have to configure: when the main content of
a page is a schema block, that entity becomes the page’s `mainEntity` instead of
a redundant Article node.

#### One connected graph, not a pile of snippets

The plugin prints a single `<script type="application/ld+json">` containing one `@
graph`. Inside it, every entity has a stable `@id` and references the others: the`
WebPage` node points at the site identity and the `WebSite`, the article points 
at its author, the breadcrumb trail belongs to the page, and the primary image is
a node instead of a bare URL.

Posts mapped to Article carry the detail a machine needs to place them: the manual
excerpt as `description`, the word count, the tags as `keywords` and every category
in `articleSection`, alongside headline, dates, publisher, primary image and the
author entity.

Block-level entities join the same graph. A Recipe can take its author from the 
post author, an Event can name your Organization as the organizer, a Product can
point its brand and manufacturer at the site identity, and a Local Business block
can _become_ the site identity rather than compete with it.

#### Optional: check your work before you publish

Connect a [ValidGraph](https://validgraph.com) account under Settings and the editor
gains a validation panel: a completeness score, an AI discoverability breakdown,
rich-result eligibility, errors, range warnings and the recommended fields you have
left empty, per schema on the page. A small indicator on each block shows its state,
and a summary appears in the pre-publish panel.

It is entirely opt-in and read-only. The API key is stored on your server and every
call goes through a server-side proxy, so it never reaches the browser. Skip it 
and the plugin emits exactly the same markup, which you can check with the [Google Rich Results Test](https://search.google.com/test/rich-results)
and the [Schema.org Validator](https://validator.schema.org/).

#### It sits beside your SEO plugin

Schema Blocks is not an SEO plugin and does not want to replace one. It writes structured
data; Yoast SEO, Rank Math, All in One SEO or The SEO Framework keep doing titles,
meta descriptions, sitemaps and redirects.

If another plugin already emits the same node type, the plugin tells you: a notice
on the settings screen lists the conflicts it detects. From there you either disable
that schema type in the other plugin, or use the Advanced switch to stop emitting
the site-level nodes here.

#### For developers

The output is filterable at every level, and the extensibility contract (1.8.0) 
is documented and versioned:

 * `cddc_schema_faq_output`, `cddc_schema_review_output`, `cddc_schema_recipe_output`,`
   cddc_schema_product_output`, `cddc_schema_event_output`, `cddc_schema_local_business_output`,`
   cddc_schema_howto_output`, `cddc_schema_jobposting_output`, `cddc_schema_breadcrumb_output`–
   the node each block emits.
 * `cddc_schema_blocks_graph_nodes` – the whole `@graph` before it is printed.
 * `cddc_schema_blocks_author_person` – enrich the author `Person` node.
 * `cddc_schema_blocks_page_content_type` – override the content type per post in
   code.
 * `cddc_schema_blocks_identity_extra_schema`, `cddc_schema_blocks_organization_schema`,`
   cddc_schema_blocks_website_schema`, `cddc_schema_blocks_breadcrumb_schema` – 
   the site-level nodes.
 * `Schema_Graph::flag_main_entity()`, `Schema_Graph::ensure_author_person()` and`
   Schema_Graph::registered_identity_id()` are public seams for add-ons.
 * The editor toolkit used by the blocks is exposed on `window.cddcSchema.ui`, so
   an add-on can build cards that look native.

Blocks are registered from `block.json`, rendered server-side, and the FAQ accordion
uses the Interactivity API with no jQuery and no custom front-end framework.

#### Privacy

The plugin generates and prints JSON-LD on your own server. Nothing is sent anywhere
unless you connect a ValidGraph account with your own API key, and until you do,
no request leaves your site.

## Sawir-shaashado

[⌊The nine schema blocks in the inserter: FAQ, Review, Recipe, Product, Event, Local
Business, How-To, Job Posting and Breadcrumb⌉⌊The nine schema blocks in the inserter:
FAQ, Review, Recipe, Product, Event, Local Business, How-To, Job Posting and Breadcrumb⌉[

The nine schema blocks in the inserter: FAQ, Review, Recipe, Product, Event, Local
Business, How-To, Job Posting and Breadcrumb

[⌊Recipe block in the editor, with ingredients, instructions and nutrition as inner
blocks, prep and cook times, yield and cuisine⌉⌊Recipe block in the editor, with
ingredients, instructions and nutrition as inner blocks, prep and cook times, yield
and cuisine⌉[

Recipe block in the editor, with ingredients, instructions and nutrition as inner
blocks, prep and cook times, yield and cuisine

[⌊Product block in the editor: price, currency, availability, SKU, GTIN and MPN,
and the toggle that points the brand at your site identity⌉⌊Product block in the
editor: price, currency, availability, SKU, GTIN and MPN, and the toggle that points
the brand at your site identity⌉[

Product block in the editor: price, currency, availability, SKU, GTIN and MPN, and
the toggle that points the brand at your site identity

[⌊Local Business block in the editor: business subtype, address, geo coordinates
and opening hours⌉⌊Local Business block in the editor: business subtype, address,
geo coordinates and opening hours⌉[

Local Business block in the editor: business subtype, address, geo coordinates and
opening hours

[⌊Job Posting block in the editor: employment type, hiring organization, location
and salary range⌉⌊Job Posting block in the editor: employment type, hiring organization,
location and salary range⌉[

Job Posting block in the editor: employment type, hiring organization, location 
and salary range

[⌊The Schema panel in the document sidebar, overriding the content type and page
type of a single page⌉⌊The Schema panel in the document sidebar, overriding the 
content type and page type of a single page⌉[

The Schema panel in the document sidebar, overriding the content type and page type
of a single page

[⌊Settings > Blocks: enable or disable each of the nine blocks; a disabled block
leaves the inserter and stops emitting JSON-LD⌉⌊Settings > Blocks: enable or disable
each of the nine blocks; a disabled block leaves the inserter and stops emitting
JSON-LD⌉[

Settings > Blocks: enable or disable each of the nine blocks; a disabled block leaves
the inserter and stops emitting JSON-LD

[⌊Settings > Site Identity, with the schema completeness ring and the live JSON-
LD preview⌉⌊Settings > Site Identity, with the schema completeness ring and the 
live JSON-LD preview⌉[

Settings > Site Identity, with the schema completeness ring and the live JSON-LD
preview

[⌊The Schema author profile on the user screen: job title, sameAs URLs, areas of
expertise, credentials and the worksFor opt-in that enrich every author entity⌉⌊
The Schema author profile on the user screen: job title, sameAs URLs, areas of expertise,
credentials and the worksFor opt-in that enrich every author entity⌉[

The Schema author profile on the user screen: job title, sameAs URLs, areas of expertise,
credentials and the worksFor opt-in that enrich every author entity

[⌊A Recipe on the front end: the block renders the content its markup describes,
so the two can never disagree⌉⌊A Recipe on the front end: the block renders the 
content its markup describes, so the two can never disagree⌉[

A Recipe on the front end: the block renders the content its markup describes, so
the two can never disagree

[⌊The FAQ accordion on the front end, built on native details and summary elements⌉⌊
The FAQ accordion on the front end, built on native details and summary elements⌉[

The FAQ accordion on the front end, built on native details and summary elements

[⌊Settings > Content: map each post type to Article, Blog posting or nothing, with
the live JSON-LD preview and the completeness ring beside it⌉⌊Settings > Content:
map each post type to Article, Blog posting or nothing, with the live JSON-LD preview
and the completeness ring beside it⌉[

Settings > Content: map each post type to Article, Blog posting or nothing, with
the live JSON-LD preview and the completeness ring beside it

[⌊Settings > Validgraph: the optional validation connection, its tier and quota,
the project the site reports to, and post-publish URL re-validation⌉⌊Settings > 
Validgraph: the optional validation connection, its tier and quota, the project 
the site reports to, and post-publish URL re-validation⌉[

Settings > Validgraph: the optional validation connection, its tier and quota, the
project the site reports to, and post-publish URL re-validation

[⌊ValidGraph results in the editor sidebar: completeness and AI discoverability 
per entity, property warnings, missing recommended fields and the full AI discoverability
breakdown⌉⌊ValidGraph results in the editor sidebar: completeness and AI discoverability
per entity, property warnings, missing recommended fields and the full AI discoverability
breakdown⌉[

ValidGraph results in the editor sidebar: completeness and AI discoverability per
entity, property warnings, missing recommended fields and the full AI discoverability
breakdown

## Xayndaabyo

Kaabahani wuxuu bixinaya 12 xayndaab.

 *   FAQ Schema Create an FAQ section with Schema.org markup for better SEO.
 *   Breadcrumb Schema Add Schema.org BreadcrumbList structured data for navigation
   breadcrumbs.
 *   Review Schema Create a review with star ratings and Schema.org markup for rich
   snippets.
 *   Event Schema An event block with full Schema.org markup for rich results.
 *   Job Posting Schema A job posting block with full Schema.org markup for Google
   Jobs rich results.
 *   Recipe Schema A recipe block with full Schema.org markup for rich results.
 *   Local Business Schema A local business block with full Schema.org markup for
   rich results.
 *   How-To Schema Add Schema.org HowTo structured data for step-by-step instructions.
 *   Product Schema A product block with full Schema.org markup for rich results.
 *   Recipe Ingredients List of ingredients for a recipe.
 *   Recipe Instructions Step-by-step instructions for a recipe.
 *   Recipe Nutrition Nutritional information for a recipe.

## Rakibaad

 1. In your WordPress admin, go to Plugins > Add New and search for “Codedication Schema
    Blocks”, or upload the plugin folder to `/wp-content/plugins/`.
 2. Activate the plugin.
 3. Open **Schema Blocks** in the admin menu and fill in Site Identity. The completeness
    ring tells you what is still missing.
 4. Add schema blocks to your posts and pages from the “Schema Blocks” category in 
    the inserter.

Posts emit Article markup from the moment you activate the plugin, so a normal blog
is covered before you touch anything.

## SBI

### Will this guarantee rich results in Google?

No, and be suspicious of any plugin that says it will. Search engines decide what
to display, based on the quality of the page, the market and their own policies.
What a plugin can do is give them complete, valid and unambiguous markup, which 
is the part you control.

### Do FAQ blocks still produce those dropdowns in Google search results?

Not any more. Google retired FAQ rich results for the vast majority of sites, and
How-To rich results before that, so no plugin can bring them back. `FAQPage` markup
is still worth publishing: it is how assistants, AI answer engines and other parsers
read the questions on your page, and the accordion itself is good for your visitors.

### Does it conflict with Yoast SEO, Rank Math or All in One SEO?

No. It writes content-level and site-level structured data alongside them. If two
plugins emit the same node type, the settings screen shows a conflict notice: disable
that schema type in the other plugin, or use the Advanced switch here to stop emitting
the site-level nodes and keep only the block-level ones.

### My SEO plugin already emits Organization and WebSite. Can I keep theirs?

Yes. Settings > Advanced has a toggle that suppresses the site-level nodes from 
this plugin. Your blocks still emit their own entities and reference the identity
the other plugin publishes.

### How do my posts get Article schema?

Automatically. Settings > Content maps every public post type to Article, Blog posting
or none, with posts set to Article by default. Each matching post emits an `Article`
node with headline, dates, author, publisher, primary image and section, wired into
the same graph as the blocks on the page.

### Can I change that for one specific post?

Yes. The Schema panel in the document sidebar overrides both the content type (Article,
Blog posting, News article or none) and the page type (About, Contact, Profile, 
Item or Collection page) for that post only.

### What do the author profile fields do?

They turn each author into a proper `Person` entity: job title, honorific prefix,
credentials, areas of expertise, `sameAs` profile URLs, `alumniOf`, the colleagues
they know, an avatar override, and optional links to the site organization as a 
member (`worksFor`) or a founder. Every article that user signs references that 
entity, their author archive is typed as `ProfilePage`, and the Organization lists
them as `employee`. The documented benefit is disambiguation, not a ranking boost.

### What is ValidGraph, and do I need it?

ValidGraph is our validation service. Connect it and the block editor shows a completeness
score, an AI discoverability breakdown, rich-result eligibility and a list of errors
and missing recommended fields, before you publish. It is optional: without it the
plugin emits the same markup, and you can validate manually with Google’s Rich Results
Test or the Schema.org Validator.

### Does the plugin send my data anywhere?

Not by default. All markup is generated and printed on your own server. The only
exception is the ValidGraph connection, which you have to set up yourself with your
own API key. Requests go through a server-side proxy, so the key is never exposed
to the browser.

### Can I turn off the blocks I do not use?

Yes. Settings > Blocks enables or disables each of the nine blocks. A disabled block
disappears from the inserter and stops emitting JSON-LD.

### Does it work with block themes and the site editor?

Yes. The blocks use the standard block API and work in any theme, classic or block
based. The plugin does not depend on a particular theme.

### Can I use it with WooCommerce?

Yes. You can add Review, FAQ or any other block to a product page. If WooCommerce
or your SEO plugin already emits `Product` markup for the same item, use one or 
the other, not both.

### What about performance?

The graph is assembled during the render of the page and printed as one JSON-LD 
script. There are no extra HTTP requests on the front end, no jQuery, and no impact
on Core Web Vitals.

### Is it translation-ready?

Yes. Every string is translatable, and the schema output carries an `inLanguage`
property derived from your site language.

### What happens if I uninstall it?

Uninstalling removes the plugin’s own data: settings, the author profile fields 
it added, and the per-post schema meta. Your posts and pages are untouched, though
the blocks stop rendering, so export or migrate your markup first if you plan to
move.

### Can developers change the output?

Yes. Every block node, the site-level nodes and the whole `@graph` pass through 
documented filters, and the plugin exposes public seams for add-ons. See the “For
developers” section above.

## Dibu-eegisyo

![](https://secure.gravatar.com/avatar/405278ef6109b851d7e43198bb41ff50c96e5c117321420881a4c2e29f28cd32?
s=60&d=retro&r=g)

### 󠀁[Great Gutenberg-native schema plugin](https://wordpress.org/support/topic/great-gutenberg-native-schema-plugin/)󠁿

 [Marta Torre](https://profiles.wordpress.org/martatorre/) 18 Juunyo, 2026

Clean interface, easy to use, and generates valid JSON-LD without unnecessary complexity.
I like that it complements SEO plugins like Yoast and Rank Math instead of conflicting
with them. A great option if you want to add FAQ and Review schema directly from
the block editor. Highly recommended.

![](https://secure.gravatar.com/avatar/6b119af79b3082e51875c290cd1d49209a3b0375bd6fe8f4e1ef508b9264e55d?
s=60&d=retro&r=g)

### 󠀁[Muy recomendable para mejorar el SEO técnico en WordPress](https://wordpress.org/support/topic/muy-recomendable-para-mejorar-el-seo-tecnico-en-wordpress/)󠁿

 [Luis Ruiz](https://profiles.wordpress.org/lruizcode/) 16 Juunyo, 2026

Plugin muy práctico para quienes trabajan con el editor de bloques y quieren añadir
datos estructurados sin depender de shortcodes ni campos personalizados. Me gusta
especialmente que integre FAQ y Review Schema directamente en Gutenberg, genere 
JSON-LD automáticamente y permita configurar datos globales del sitio desde una 
pantalla sencilla. También se agradece la compatibilidad con plugins SEO populares
y el enfoque ligero, sin impacto relevante en rendimiento.

 [ Akhri dhammaan 2 dibu-eegis ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/)

## Ka-qaybgalayaasha & Horumariyayaasha

“Codedication Schema Blocks” waa softiweer il furan. Dadka soo socda ayaa wax ku
biiriyay kaabahan.

Ka-qaybgalayaasha

 *   [ codedication ](https://profiles.wordpress.org/codedication/)
 *   [ Paulo Carvajal ](https://profiles.wordpress.org/pauloc/)

[Ku tarjun “Codedication Schema Blocks” luqaddaada.](https://translate.wordpress.org/projects/wp-plugins/codedication-schema-blocks)

### Ma xiisaynaysaa horumarinta?

[Baadh koodka](https://plugins.trac.wordpress.org/browser/codedication-schema-blocks/),
fiiri [bakhaarka SVN](https://plugins.svn.wordpress.org/codedication-schema-blocks/),
ama iska qor [diiwaanka horumarinta](https://plugins.trac.wordpress.org/log/codedication-schema-blocks/)
adigoo adeegsanaya [RSS](https://plugins.trac.wordpress.org/log/codedication-schema-blocks/?limit=100&mode=stop_on_copy&format=rss).

## Isbeddellada

#### 2.0.0

 * New: seven more blocks — Recipe, Product, Event, Local Business, How-To, Job 
   Posting and Breadcrumb. Recipe carries Ingredients, Instructions and Nutrition
   as inner blocks, so the markup describes what the page shows.
 * New: per-author E-E-A-T profiles. The WordPress profile screen gains job title,
   honorific prefix, sameAs URLs, areas of expertise, credentials, `alumniOf`, a
   colleague picker (`knows`), an avatar override and opt-in member/founder links
   to the site organization; those fields enrich every author `Person` node (which
   also carries `givenName`/`familyName`), the Organization lists members as `employee`/`
   founder`, and author archives are typed as `ProfilePage`.
 * New: per-post content-type and page-type overrides from a “Schema” panel in the
   document sidebar.
 * New: advanced site-identity fields — Wikidata ID, Wikipedia URL, legal name, 
   VAT ID, employee count, job title, credentials, areas of expertise (`knowsAbout`,
   for Organization and Person alike) and LinkedIn/ORCID/ResearchGate profiles —
   on the Settings page’s Advanced tab, together with a toggle that suppresses the
   site-level nodes when another plugin already emits them.
 * Fixed: the E-E-A-T identity fields (job title, credentials, areas of expertise,
   ORCID/LinkedIn/ResearchGate) never reached the output when the site identity 
   was a Person. The Person node is emitted with the hybrid type `["Person","Organization"]`,
   and the overlay compared the type as a plain string, so every one of those fields
   was dropped.
 * New: entity linking on the blocks — Event organizer, Product brand and manufacturer,
   How-To publisher and Recipe author can reference the site identity or the post
   author instead of repeating free text, and a Local Business block can compose
   itself into the site identity.
 * Changed: the Blocks tab lists all nine blocks, enabled or disabled individually
   and saved by the same Save button.
 * Changed: extensibility contract 1.8.0 (additive) — the seven `cddc_schema_{type}
   _output` filters and `cddc_schema_blocks_identity_extra_schema` are public plugin
   filters. Every existing `cddc_schema_blocks_*` hook, the `window.cddcSchema.ui`
   toolkit and the `cddc.settings.*` JS hooks are unchanged.
 * Changed: uninstalling removes everything the plugin stores — its settings option,
   the author-profile user meta and both post meta keys.
 * New: Article nodes carry `description` from the manual excerpt, `wordCount`, `
   keywords` from the post tags and every category in `articleSection`.
 * Fixed: credentials are emitted as the `name` of the `EducationalOccupationalCredential`,
   not as `credentialCategory`.
 * Changed: the “another schema plugin detected” notice links straight to that plugin’s
   schema settings (Yoast, Rank Math, AIOSEO, SEOPress, Schema Pro) and to the Advanced
   tab toggle, instead of to our Settings page.
 * Compat: Tested up to WordPress 7.1.

#### 1.2.0

 * Fixed: the ValidGraph validation bridge now calls the correct API endpoint (`
   validgraph.com/api/v1/...`) — the previous URL (`wp-json/validgraph`) never resolved,
   so validation requests always failed.
 * Fixed: the Website settings tab now reaches the output — the `WebSite` node emits`
   description`, `inLanguage` and `author` from the fields the tab already collected,
   each omitted when empty. Previously five fields were saved and previewed but 
   never emitted.
 * Changed: the Website tab’s “sameAs” field accepts several URLs instead of one,
   using the same repeater the Review block uses. Stored single URLs keep working
   and are converted on the next save; no migration needed. The publisher URL stays
   a fallback — when a site identity is configured, the `WebSite` node keeps referencing
   it instead.
 * New: review authors can be attributed to the site identity — a new “Attribute
   to the site identity” toggle on the Review block makes `Review.author` reference
   the site Organization or Person node instead of an anonymous inline author, and
   the visible byline is resolved at render time, so renaming the identity in Settings
   updates published posts without re-saving them. Falls back to the inline author
   when no identity is configured, so a reference never dangles. Extensibility contract
   bumped to `1.7.0` — `Schema_Graph::registered_identity_id()` is now a public 
   seam.
 * Changed: review `@id`s are now stable across block reordering — each Review node
   derives its `@id` from the block’s own id (`{permalink}#review-a1b2c3d4`) instead
   of its position on the page, and duplicated blocks emit two nodes instead of 
   silently merging into one. Reviews saved before this release keep their current
   ids; nothing is rewritten.
 * New: book details on the Review block — when the reviewed item type is `Book`,
   a new “Book Details” section adds author, publisher, publication date, format,
   page count, ISBN and external identity URLs (OpenLibrary, Wikidata, Goodreads).
   The filled fields are emitted on `itemReviewed` (`author`, `publisher`, `datePublished`,`
   bookFormat`, `numberOfPages`, `isbn`, `sameAs`) and shown as a metadata line 
   under the item name, so the markup describes visible content. Every field is 
   optional and existing reviews are unchanged.
 * New: author Person entities — the automatic Article node now carries an `author`
   referencing a `Person` node built from the post author’s WordPress profile (name,
   author archive URL, avatar, bio, website). Nodes are minted on demand with a 
   stable, PII-free `@id`, deduplicated against the site Person identity via a new
   Site Identity “WordPress user” picker. Extensibility contract bumped to `1.5.0`—
   new `Schema_Graph::ensure_author_person()` seam (callable by addons) and `cddc_schema_blocks_author_person`
   enrichment filter for E-E-A-T fields.
 * New: automatic Article schema — posts now emit an `Article` node (`{permalink}#
   article`) wired into the unified graph, with headline, dates, publisher, primary
   image, and category. A new Content settings tab maps each public post type to
   None, Article, or Blog posting (default: posts  Article). Extensibility contract
   bumped to `1.4.0` — new `cddc_schema_blocks_page_content_type` filter (per-post
   type overrides, e.g. `NewsArticle`) and main-entity election API (`Schema_Graph::
   flag_main_entity()`) so addon content nodes replace the automatic Article instead
   of competing with it.
 * New: FAQ and Review schemas now emit an `inLanguage` property derived from the
   site language (BCP-47, e.g. `en-US`). No configuration needed; overridable via
   the `cddc_schema_faq_output` / `cddc_schema_review_output` filters.
 * Changed: unified JSON-LD output — the page now prints one `<script type="application/
   ld+json">` with a single `@graph` instead of two separate scripts. Adds WebPage(
   and primary image) anchor nodes linking site identity, WebSite, breadcrumbs, 
   and block schemas together. Extensibility contract bumped to `1.3.0` — new `cddc_schema_blocks_graph_nodes`
   filter.
 * Changed: the FAQ block’s `{permalink}#faq` node id is retired — its questions
   now live on the page’s WebPage node (`@type: ["WebPage","FAQPage"]`, `mainEntity`).
   FAQ rich results were retired by Google (2026-05-07), so no SERP feature depends
   on the old id.

#### 1.1.0

 * New: Extensibility contract 1.1.0 — the shared schema-ui editor toolkit is now
   exposed to addons on `window.cddcSchema.ui` via the `cddc-schema-ui` script handle(
   SchemaBlockCard, SchemaFormSection, SchemaPreviewInline, DurationInput, and more).
 * New: Extensibility contract 1.2.0 — added the `cddc_schema_blocks_settings_url`
   filter so a companion hosting the Settings screen elsewhere can correct internal
   links (admin notices, the plugins-list action link).
 * New: “Settings” action link on the Plugins screen, next to Deactivate.
 * New: WordPress Playground blueprint (`.wordpress-org/blueprints/blueprint.json`)
   powering the Live Preview button on the wp.org plugin directory.
 * Fix: the site-wide BreadcrumbList is suppressed on pages containing an addon 
   breadcrumb block with manual items, so a page never emits two BreadcrumbList 
   schemas.
 * Fix: the Review block’s `reviewBody` now falls back to the block’s rendered HTML
   when the attribute isn’t set explicitly.
 * Removed: the dead `load_optional_integrations()` bootstrap and `Admin_Integration`
   companion-coupling code (unreachable without a package this plugin never ships)—
   the Settings screen registration is simpler and wp.org-review-clean as a result.

#### 1.0.3

 * New: FAQ summaries now show an animated +/× icon that rotates when an item opens.
   Pure CSS driven by the native `details[open]` state (no JS), mirrored in the 
   editor and respecting `prefers-reduced-motion`.

#### 1.0.2

 * Fix: Review block now renders translatable labels through `__()` so strings reach
   the `.pot` and translations apply at render time.
 * Compat: Tested up to WordPress 7.0.

#### 1.0.1

 * Fix (WordPress.org review): conflict admin notice no longer emits an inline `
   <script>` tag — the dismiss handler is now an enqueued asset (`assets/admin/conflict-
   notice.js`) wired via `data-*` attributes on the notice container. The notice
   is also gated to the plugin Settings page and `plugins.php` only.
 * Fix (WordPress.org review): FAQ block render callback no longer echoes a `WP_HTML_Tag_Processor`-
   mutated HTML string. The wrapper `<div>` is composed from escape-aware core APIs,
   and per-`<details>` Interactivity API directives are now injected via a `render_block`
   filter scoped to FAQ-ancestor renders. Foreign `data-wp-*` directives on nested
   blocks are preserved.
 * Fix: Settings page rendered empty when the centralized Codedication admin was
   active. The plugin now registers a “Settings” tab inside the centralized renderer
   and the React app hydrates from saved option values.
 * Fix: `useSlotFills` crash on older `@wordpress/components`; the Advanced tab 
   now derives its visibility from the internal fill bridge.
 * Improvement: Completeness score redistributed to weigh Site Identity (75), Website(
   20) and Breadcrumbs (5) — previously only Site Identity counted, so the page 
   could reach 100% while Website and Breadcrumbs were empty.
 * New filter: `cddc_schema_blocks_is_settings_screen` lets integrations declare
   authoritatively when the React Settings app should be enqueued.
 * Cleanup: removed dead code paths in `Admin_Integration`, dead `utils/completeness-
   score.ts` / `utils/json-ld-preview.ts` modules, the unused `HelpTip` component
   family and the divergent PHP `Site_Schema::get_completeness_score()` (the React
   UI is now the single source of truth for completeness).
 * Fix: schema-conflict admin notice now links to the real settings screen (`Admin_Integration::
   get_settings_url()`) instead of guessing from `class_exists()`, so the link is
   correct in the fallback path where the shared admin package exists but its renderer
   is not yet available.

#### 1.0.0

 * Initial release
 * FAQ Block with FAQPage schema
 * FAQ Item child block
 * Review Block with Review schema
 * Support for 6 item types
 * Settings page for block management
 * Interactivity API for accordion

## Meta

 *  Version **2.0.0**
 *  Last updated **12 saac kahor**
 *  Active installations **20+**
 *  WordPress version ** 6.5 ama ka sareeya **
 *  Tested up to **7.1**
 *  PHP version ** 8.0 ama ka sareeya **
 *  Language
 * [English (US)](https://wordpress.org/plugins/codedication-schema-blocks/)
 * Tags
 * [JSON-LD](https://so.wordpress.org/plugins/tags/json-ld/)[rich snippets](https://so.wordpress.org/plugins/tags/rich-snippets/)
   [schema](https://so.wordpress.org/plugins/tags/schema/)[seo](https://so.wordpress.org/plugins/tags/seo/)
   [structured data](https://so.wordpress.org/plugins/tags/structured-data/)
 *  [Aragti Sare](https://so.wordpress.org/plugins/codedication-schema-blocks/advanced/)

## Qiimeynta

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/codedication-schema-blocks/reviews/)

## Ka-qaybgalayaasha

 *   [ codedication ](https://profiles.wordpress.org/codedication/)
 *   [ Paulo Carvajal ](https://profiles.wordpress.org/pauloc/)

## Taageero

Ma heysaa waxaad dhahdo? Caawimaad ma u baahan tahay?

 [Eeg madasha taageerada](https://wordpress.org/support/plugin/codedication-schema-blocks/)

## Ku deeq

Ma jeclaan lahayd inaad taageerto horumarinta kaabahan?

 [ Ugu deeq kaabahan ](https://codedication.com)