{"id":302780,"date":"2026-05-19T11:23:53","date_gmt":"2026-05-19T11:23:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/codedication-schema-blocks\/"},"modified":"2026-08-15T11:39:47","modified_gmt":"2026-08-15T11:39:47","slug":"codedication-schema-blocks","status":"publish","type":"plugin","link":"https:\/\/th.wordpress.org\/plugins\/codedication-schema-blocks\/","author":23479631,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.0.4","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"Codedication Schema Blocks","header_author":"Codedication","header_description":"FAQ schema and review schema Gutenberg blocks that generate Schema.org JSON-LD for rich snippets and structured data SEO.","assets_banners_color":"153045","last_updated":"2026-08-15 11:39:47","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/codedication.com","header_plugin_uri":"https:\/\/codedication.com\/plugins\/schema-blocks","header_author_uri":"https:\/\/codedication.com","rating":5,"author_block_rating":0,"active_installs":20,"downloads":399,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"codedication","date":"2026-05-19 11:23:36"},"1.0.2":{"tag":"1.0.2","author":"codedication","date":"2026-05-20 10:27:25"},"1.1.0":{"tag":"1.1.0","author":"codedication","date":"2026-07-04 10:09:02"},"1.2.0":{"tag":"1.2.0","author":"codedication","date":"2026-08-15 11:39:47"}},"upgrade_notice":{"1.0.3":"<p>Adds an animated +\/\u00d7 icon to FAQ items (CSS-only, accessible). No breaking changes.<\/p>","1.0.2":"<p>Translatable Review block labels reach the <code>.pot<\/code> and apply at render. Tested with WordPress 7.0.<\/p>","1.0.1":"<p>Fixes the Settings page appearing empty under the centralized admin. Saved values now hydrate correctly. Recommended upgrade.<\/p>","1.0.0":"<p>First release \u2014 FAQ Block with FAQPage schema and Review Block with star ratings and JSON-LD output.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3537180,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3537180,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3537180,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3537180,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3648514,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/post.php?post=1&action=edit\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"codedication-schema-blocks\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require '\\\/wordpress\\\/wp-load.php'; $faq = \\\"<!-- wp:codedication\\\/schema-faq -->\\\\n<!-- wp:details {\\\\\\\"summary\\\\\\\":\\\\\\\"Do FAQ blocks support Schema.org markup?\\\\\\\"} -->\\\\n<details class=\\\\\\\"wp-block-details\\\\\\\"><summary>Do FAQ blocks support Schema.org markup?<\\\/summary>\\\\n<!-- wp:paragraph -->\\\\n<p>Yes \\\\u2014 this plugin automatically generates FAQPage JSON-LD from your FAQ items.<\\\/p>\\\\n<!-- \\\/wp:paragraph -->\\\\n<\\\/details>\\\\n<!-- \\\/wp:details -->\\\\n\\\\n<!-- wp:details {\\\\\\\"summary\\\\\\\":\\\\\\\"How does the accordion work?\\\\\\\"} -->\\\\n<details class=\\\\\\\"wp-block-details\\\\\\\"><summary>How does the accordion work?<\\\/summary>\\\\n<!-- wp:paragraph -->\\\\n<p>It uses the WordPress Interactivity API for a keyboard-accessible, JavaScript-powered accordion.<\\\/p>\\\\n<!-- \\\/wp:paragraph -->\\\\n<\\\/details>\\\\n<!-- \\\/wp:details -->\\\\n<!-- \\\/wp:codedication\\\/schema-faq -->\\\"; $review = \\\"<!-- wp:codedication\\\/schema-review {\\\\\\\"itemName\\\\\\\":\\\\\\\"Schema Blocks\\\\\\\",\\\\\\\"itemType\\\\\\\":\\\\\\\"Product\\\\\\\",\\\\\\\"ratingValue\\\\\\\":4.5,\\\\\\\"bestRating\\\\\\\":5} -->\\\\n<div class=\\\\\\\"wp-block-codedication-schema-review cddc-schema-review\\\\\\\"><div class=\\\\\\\"cddc-schema-review__header\\\\\\\"><div class=\\\\\\\"cddc-schema-review__meta\\\\\\\"><h3 class=\\\\\\\"cddc-schema-review__item-name\\\\\\\">Schema Blocks<\\\/h3><div class=\\\\\\\"cddc-schema-review__rating\\\\\\\"><div class=\\\\\\\"cddc-schema-review__rating-top\\\\\\\"><div class=\\\\\\\"cddc-schema-review__stars\\\\\\\" role=\\\\\\\"img\\\\\\\" aria-label=\\\\\\\"Rating: 4.5 out of 5 stars\\\\\\\"><span class=\\\\\\\"cddc-schema-review__star is-filled\\\\\\\" aria-hidden=\\\\\\\"true\\\\\\\">\\\\u2605<\\\/span><span class=\\\\\\\"cddc-schema-review__star is-filled\\\\\\\" aria-hidden=\\\\\\\"true\\\\\\\">\\\\u2605<\\\/span><span class=\\\\\\\"cddc-schema-review__star is-filled\\\\\\\" aria-hidden=\\\\\\\"true\\\\\\\">\\\\u2605<\\\/span><span class=\\\\\\\"cddc-schema-review__star is-filled\\\\\\\" aria-hidden=\\\\\\\"true\\\\\\\">\\\\u2605<\\\/span><span class=\\\\\\\"cddc-schema-review__star is-half\\\\\\\" aria-hidden=\\\\\\\"true\\\\\\\">\\\\u2605<\\\/span><\\\/div><span class=\\\\\\\"cddc-schema-review__rating-value\\\\\\\">4.5<\\\/span><\\\/div><div class=\\\\\\\"cddc-schema-review__rating-bar\\\\\\\" role=\\\\\\\"presentation\\\\\\\"><div class=\\\\\\\"cddc-schema-review__rating-fill\\\\\\\" style=\\\\\\\"width:90%\\\\\\\"><\\\/div><\\\/div><\\\/div><\\\/div><\\\/div><div class=\\\\\\\"cddc-schema-review__content\\\\\\\"><\\\/div><div class=\\\\\\\"cddc-schema-review__footer\\\\\\\"><\\\/div><\\\/div>\\\\n<!-- \\\/wp:codedication\\\/schema-review -->\\\"; $content = \\\"<!-- wp:heading --><h2>Frequently Asked Questions<\\\/h2><!-- \\\/wp:heading -->\\\\n\\\\n\\\" . $faq . \\\"\\\\n\\\\n<!-- wp:heading --><h2>Product Review<\\\/h2><!-- \\\/wp:heading -->\\\\n\\\\n\\\" . $review; wp_update_post( [ 'ID' => 1, 'post_title' => 'Schema Blocks Demo', 'post_content' => $content, 'post_status' => 'publish' ] );\"}]}"}},"all_blocks":{"codedication\/schema-review":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"codedication\/schema-review","version":"1.0.0","title":"Review Schema","category":"schema-blocks","description":"Create a review with star ratings and Schema.org markup for rich snippets.","keywords":["review","rating","stars","schema","seo"],"textdomain":"codedication-schema-blocks","attributes":{"blockId":{"type":"string"},"itemName":{"type":"string","default":""},"itemType":{"type":"string","default":"Product","enum":["Product","LocalBusiness","Movie","Book","Restaurant","Thing"]},"itemImage":{"type":"string","default":""},"itemDescription":{"type":"string","default":""},"itemUrl":{"type":"string","default":""},"ratingValue":{"type":"number","default":0},"bestRating":{"type":"number","default":5},"worstRating":{"type":"number","default":1},"authorName":{"type":"string","default":""},"authorType":{"type":"string","default":"Person","enum":["Person","Organization"]},"authorFromSiteIdentity":{"type":"boolean","default":false},"datePublished":{"type":"string","default":""},"reviewBody":{"type":"string","default":""},"publisherName":{"type":"string","default":""},"publisherType":{"type":"string","default":"Organization","enum":["Organization","Person"]},"reviewAspect":{"type":"string","default":""},"positiveNotes":{"type":"array","default":[],"items":{"type":"string"}},"negativeNotes":{"type":"array","default":[],"items":{"type":"string"}},"ratingExplanation":{"type":"string","default":""},"bookAuthor":{"type":"string","default":""},"bookIsbn":{"type":"string","default":""},"bookFormat":{"type":"string","default":"","enum":["","EBook","Paperback","Hardcover","AudiobookFormat","GraphicNovel"]},"bookNumberOfPages":{"type":"number","default":0},"bookPublisher":{"type":"string","default":""},"bookDatePublished":{"type":"string","default":""},"bookSameAs":{"type":"array","default":[],"items":{"type":"string"}}},"supports":{"html":false,"anchor":true,"className":true,"align":["wide"],"spacing":{"margin":true,"padding":true},"color":{"background":true,"text":true},"typography":{"fontSize":true}},"render":"file:.\/render.php","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css"},"codedication\/schema-faq":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"codedication\/schema-faq","version":"1.0.0","title":"FAQ Schema","category":"schema-blocks","description":"Create an FAQ section with Schema.org markup for better SEO.","keywords":["faq","questions","answers","schema","seo"],"textdomain":"codedication-schema-blocks","attributes":{"closeOthers":{"type":"boolean","default":false},"description":{"type":"string","default":""}},"supports":{"html":false,"anchor":true,"className":true,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"color":{"background":true,"text":true},"typography":{"fontSize":true,"lineHeight":true,"letterSpacing":true,"textTransform":true,"fontStyle":true,"fontWeight":true,"textDecoration":true,"fontVariant":true},"interactivity":true},"render":"file:.\/render.php","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css"}},"tagged_versions":["1.0.1","1.0.2","1.1.0","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3537180,"resolution":"1","location":"assets","locale":"","width":2560,"height":1440},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3537180,"resolution":"2","location":"assets","locale":"","width":2560,"height":1440},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3537180,"resolution":"3","location":"assets","locale":"","width":2560,"height":1440},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3537180,"resolution":"4","location":"assets","locale":"","width":2560,"height":1440},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3537180,"resolution":"5","location":"assets","locale":"","width":2560,"height":1440},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3537180,"resolution":"6","location":"assets","locale":"","width":2560,"height":1440},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3537180,"resolution":"7","location":"assets","locale":"","width":2560,"height":1440}},"screenshots":{"1":"FAQ Block styling \u2014 Color, Typography and Dimensions controls in the Inspector sidebar","2":"FAQ Block with a custom theme \u2014 fully stylable to match your brand","3":"FAQ Block frontend output \u2014 clean accordion rendered on the published page","4":"Review Block in the editor \u2014 star rating, item type selector and review body with 4.5\/5 rating","5":"Review Block author &amp; publisher \u2014 date, Author (Person) and Publisher (Organization) fields for valid Review schema","6":"Review Block frontend output \u2014 headline, rating, review body and positive\/negative notes","7":"Settings page \u2014 Site Identity (Organization\/Person), JSON-LD preview, completeness indicator and \"Test in Google Rich Results\" shortcut"}},"plugin_section":[],"plugin_tags":[178627,2516,230403,2293,1121],"plugin_category":[],"plugin_contributors":[263511,162622],"plugin_business_model":[],"class_list":["post-302780","plugin","type-plugin","status-publish","hentry","plugin_tags-faq-schema","plugin_tags-json-ld","plugin_tags-review-schema","plugin_tags-star-rating","plugin_tags-structured-data","plugin_contributors-codedication","plugin_contributors-pauloc","plugin_committers-codedication"],"banners":{"banner":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/banner-772x250.png?rev=3537180","banner_2x":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/banner-1544x500.png?rev=3537180","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/icon-128x128.png?rev=3537180","icon_2x":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/icon-256x256.png?rev=3537180","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-1.jpg?rev=3537180","caption":"FAQ Block styling \u2014 Color, Typography and Dimensions controls in the Inspector sidebar"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-2.jpg?rev=3537180","caption":"FAQ Block with a custom theme \u2014 fully stylable to match your brand"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-3.jpg?rev=3537180","caption":"FAQ Block frontend output \u2014 clean accordion rendered on the published page"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-4.jpg?rev=3537180","caption":"Review Block in the editor \u2014 star rating, item type selector and review body with 4.5\/5 rating"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-5.jpg?rev=3537180","caption":"Review Block author &amp; publisher \u2014 date, Author (Person) and Publisher (Organization) fields for valid Review schema"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-6.jpg?rev=3537180","caption":"Review Block frontend output \u2014 headline, rating, review body and positive\/negative notes"},{"src":"https:\/\/ps.w.org\/codedication-schema-blocks\/assets\/screenshot-7.jpg?rev=3537180","caption":"Settings page \u2014 Site Identity (Organization\/Person), JSON-LD preview, completeness indicator and \"Test in Google Rich Results\" shortcut"}],"raw_content":"<!--section=description-->\n<h4>FAQ Schema &amp; Review Schema Blocks<\/h4>\n\n<p>Schema Blocks adds <strong>FAQ schema<\/strong> and <strong>Review schema<\/strong> directly to the WordPress block editor \u2014 no shortcodes, no custom fields, no coding required. Each block automatically generates valid <strong>JSON-LD structured data<\/strong> that Google can read to display <strong>rich results<\/strong> in search: FAQ dropdowns, star ratings, and review snippets.<\/p>\n\n<p>Built for Gutenberg. Works with Yoast SEO, Rank Math, and AIOSEO.<\/p>\n\n<h4>Why Schema Markup Matters<\/h4>\n\n<p>Schema markup helps search engines understand your content better, resulting in:<\/p>\n\n<ul>\n<li><strong>Google Rich Results<\/strong> \u2014 FAQ dropdowns and star ratings displayed directly in search results<\/li>\n<li><strong>Better CTR<\/strong> \u2014 More clicks from visually enhanced search listings<\/li>\n<li><strong>Voice Search<\/strong> \u2014 Structured Q&amp;A content ready for voice assistants<\/li>\n<li><strong>Knowledge Graph<\/strong> \u2014 Potential for featured snippets and entity recognition<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<p><strong>FAQ Block<\/strong> \u2014 <a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/faqpage\">Google FAQ Rich Result<\/a><\/p>\n\n<ul>\n<li>Displays as expandable Q&amp;A dropdowns directly in Google Search results<\/li>\n<li>Accordion-style interface in the block editor with full styling control<\/li>\n<li>Option to close others when one opens<\/li>\n<li>Proper FAQPage \/ Question \/ Answer schema.org markup<\/li>\n<\/ul>\n\n<p><strong>Review Block<\/strong> \u2014 <a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/structured-data\/review-snippet\">Google Review Snippet<\/a><\/p>\n\n<ul>\n<li>Displays star ratings (1\u20135) in Google Search results for Products, Books, Local Businesses, and more<\/li>\n<li>Multiple item types: Product, LocalBusiness, Movie, Book, Restaurant, Thing<\/li>\n<li>Author and publisher information, publication date, review body<\/li>\n<li>Positive\/negative notes and rating explanation<\/li>\n<\/ul>\n\n<p><strong>Settings Page<\/strong> \u2014 Site-wide structured data from a single dashboard<\/p>\n\n<ul>\n<li><strong>Site Identity<\/strong> \u2014 Organization or Person schema with name, logo, description, contact, social profiles, and founding year<\/li>\n<li><strong>WebSite schema<\/strong> \u2014 Site name, URL, and SearchAction for Google sitelinks search box<\/li>\n<li><strong>Breadcrumbs<\/strong> \u2014 BreadcrumbList schema with separator and home label configuration<\/li>\n<li><strong>Content types<\/strong> \u2014 automatic Article schema for posts, with a per-post-type mapping (None, Article, or Blog posting) for every public post type<\/li>\n<li><strong>Block management<\/strong> \u2014 Enable or disable individual schema blocks<\/li>\n<li><strong>JSON-LD preview<\/strong> \u2014 Live preview of your site-wide schema output with one-click copy and \"Test in Google Rich Results\" button<\/li>\n<li><strong>Completeness indicator<\/strong> \u2014 Visual progress ring showing how much of your identity schema is filled in<\/li>\n<\/ul>\n\n<p><strong>Built for SEO workflows<\/strong>\n* Automatic JSON-LD output in the page head \u2014 single <code>@graph<\/code> array for multiple schemas\n* Compatible with Google Rich Results Test and Schema.org Validator\n* Works directly in the Gutenberg block editor<\/p>\n\n<h4>Compatible with Popular SEO Plugins<\/h4>\n\n<p>Schema Blocks works <strong>alongside<\/strong> your existing SEO plugin \u2014 it does not replace it:<\/p>\n\n<ul>\n<li><strong>Yoast SEO<\/strong> \u2014 Yoast handles meta tags and site-wide schema; Schema Blocks handles content-level schema<\/li>\n<li><strong>Rank Math<\/strong> \u2014 Disable duplicate schema types in Rank Math settings if needed<\/li>\n<li><strong>AIOSEO<\/strong> \u2014 Fully compatible; disable conflicting schema modules in AIOSEO<\/li>\n<li><strong>The SEO Framework<\/strong> \u2014 Compatible out of the box<\/li>\n<\/ul>\n\n<p>If you already have a plugin generating FAQ or Review schema for entire pages, we recommend disabling that specific schema type to avoid duplication.<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Add a Schema Block (FAQ or Review) to any post or page in the block editor<\/li>\n<li>Fill in your content \u2014 questions and answers, ratings, review details<\/li>\n<li>The plugin outputs valid JSON-LD structured data in the page <code>&lt;head&gt;<\/code><\/li>\n<li>Google reads the schema markup and may display rich results: FAQ dropdowns, star ratings, review snippets<\/li>\n<\/ol>\n\n<h4>Validation<\/h4>\n\n<p>All schema output follows Google's structured data guidelines. Test your pages with:\n* <a href=\"https:\/\/search.google.com\/test\/rich-results\">Google Rich Results Test<\/a>\n* <a href=\"https:\/\/validator.schema.org\/\">Schema.org Validator<\/a>\n* <a href=\"https:\/\/validgraph.com\">ValidGraph<\/a> \u2014 connect your site for one-click validation right inside the editor: completeness scoring, AI discoverability checks, and rich-result eligibility, without ever leaving WordPress.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/cddc-schema-blocks\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Go to Settings \u2192 Schema Blocks to configure options<\/li>\n<li>Add Schema blocks in the editor under \"Schema Blocks\" category<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20guarantee%20rich%20snippets%20in%20google%3F\"><h3>Will this guarantee rich snippets in Google?<\/h3><\/dt>\n<dd><p>No. Google decides whether to show rich snippets based on many factors. Proper schema markup improves your chances but doesn't guarantee display.<\/p><\/dd>\n<dt id=\"does%20this%20conflict%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does this conflict with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Schema Blocks focuses on content-level schema (FAQ, Review) which complements site-wide schema from SEO plugins. We recommend disabling duplicate schema types if your SEO plugin also provides them. See the \"Compatible with Popular SEO Plugins\" section above for plugin-specific guidance.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20full%20site%20editing%20%28fse%29%20themes%3F\"><h3>Does it work with Full Site Editing (FSE) themes?<\/h3><\/dt>\n<dd><p>Yes. Schema Blocks uses the standard Gutenberg block API and works with any block theme, including FSE themes like Twenty Twenty-Four, Kadence Blocks, or GeneratePress.<\/p><\/dd>\n<dt id=\"do%20i%20need%20technical%20knowledge%3F\"><h3>Do I need technical knowledge?<\/h3><\/dt>\n<dd><p>No! Just add blocks and fill in the fields. The plugin handles all the technical JSON-LD markup automatically.<\/p><\/dd>\n<dt id=\"is%20the%20schema%20valid%3F\"><h3>Is the schema valid?<\/h3><\/dt>\n<dd><p>Yes. All output follows Schema.org specifications and Google's structured data guidelines.<\/p><\/dd>\n<dt id=\"what%20about%20performance%3F\"><h3>What about performance?<\/h3><\/dt>\n<dd><p>Schema is output as a single JSON-LD script in the page head. It's lightweight and doesn't affect page load time or Core Web Vitals.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20woocommerce%3F\"><h3>Can I use this with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. You can add Review schema to any post type, including WooCommerce product pages.<\/p><\/dd>\n<dt id=\"does%20it%20add%20organization%20or%20person%20schema%3F\"><h3>Does it add Organization or Person schema?<\/h3><\/dt>\n<dd><p>Yes. The Settings page includes a Site Identity section where you configure Organization or Person schema with name, logo, description, email, phone, address, social profiles, and founding year. A completeness indicator shows your progress.<\/p><\/dd>\n<dt id=\"how%20many%20faq%20items%20can%20i%20add%3F\"><h3>How many FAQ items can I add?<\/h3><\/dt>\n<dd><p>There is no limit. Add as many Question\/Answer pairs as you need. All items are included in the FAQPage JSON-LD output.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20my%20data%20anywhere%3F\"><h3>Does the plugin send my data anywhere?<\/h3><\/dt>\n<dd><p>No, not by default. All JSON-LD is generated and output entirely on your own server. The only exception is the optional ValidGraph integration: it only activates if you explicitly connect an account with your own API key, and until you do, nothing ever leaves your site.<\/p><\/dd>\n<dt id=\"what%20is%20validgraph%20and%20do%20i%20have%20to%20use%20it%3F\"><h3>What is ValidGraph and do I have to use it?<\/h3><\/dt>\n<dd><p>ValidGraph is an optional companion service that checks your schema for completeness, AI discoverability, and rich-result eligibility right inside the block editor. It's entirely opt-in \u2014 connect it under Settings \u2192 Schema Blocks, or skip it and validate manually with Google's tools instead.<\/p><\/dd>\n<dt id=\"does%20it%20generate%20article%20schema%20for%20my%20posts%20automatically%3F\"><h3>Does it generate Article schema for my posts automatically?<\/h3><\/dt>\n<dd><p>Yes. Assign a post type to \"Article\" or \"Blog posting\" under Settings \u2192 Content and matching posts automatically emit an Article node \u2014 headline, dates, author, publisher, primary image \u2014 merged into the same JSON-LD graph as your FAQ and Review blocks.<\/p><\/dd>\n<dt id=\"does%20it%20add%20breadcrumb%20schema%20too%3F\"><h3>Does it add Breadcrumb schema too?<\/h3><\/dt>\n<dd><p>Yes. The Settings page includes a Breadcrumbs section that outputs a site-wide BreadcrumbList schema, with configurable separator and home label.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20off%20a%20schema%20block%20i%20don%27t%20use%3F\"><h3>Can I turn off a schema block I don't use?<\/h3><\/dt>\n<dd><p>Yes. Settings \u2192 Schema Blocks \u2192 Block management lets you enable or disable the FAQ and Review blocks individually.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. All strings are translation-ready, and every FAQ and Review schema automatically includes an <code>inLanguage<\/code> property derived from your site's language setting.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Fixed: the ValidGraph validation bridge now calls the correct API endpoint (<code>validgraph.com\/api\/v1\/...<\/code>) \u2014 the previous URL (<code>wp-json\/validgraph<\/code>) never resolved, so validation requests always failed.<\/li>\n<li>Fixed: the Website settings tab now reaches the output \u2014 the <code>WebSite<\/code> node emits <code>description<\/code>, <code>inLanguage<\/code> and <code>author<\/code> from the fields the tab already collected, each omitted when empty. Previously five fields were saved and previewed but never emitted.<\/li>\n<li>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 \u2014 when a site identity is configured, the <code>WebSite<\/code> node keeps referencing it instead.<\/li>\n<li>New: review authors can be attributed to the site identity \u2014 a new \"Attribute to the site identity\" toggle on the Review block makes <code>Review.author<\/code> 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 <code>1.7.0<\/code> \u2014 <code>Schema_Graph::registered_identity_id()<\/code> is now a public seam.<\/li>\n<li>Changed: review <code>@id<\/code>s are now stable across block reordering \u2014 each Review node derives its <code>@id<\/code> from the block's own id (<code>{permalink}#review-a1b2c3d4<\/code>) 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.<\/li>\n<li>New: book details on the Review block \u2014 when the reviewed item type is <code>Book<\/code>, 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 <code>itemReviewed<\/code> (<code>author<\/code>, <code>publisher<\/code>, <code>datePublished<\/code>, <code>bookFormat<\/code>, <code>numberOfPages<\/code>, <code>isbn<\/code>, <code>sameAs<\/code>) 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.<\/li>\n<li>New: author Person entities \u2014 the automatic Article node now carries an <code>author<\/code> referencing a <code>Person<\/code> 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 <code>@id<\/code>, deduplicated against the site Person identity via a new Site Identity \"WordPress user\" picker. Extensibility contract bumped to <code>1.5.0<\/code> \u2014 new <code>Schema_Graph::ensure_author_person()<\/code> seam (callable by addons) and <code>cddc_schema_blocks_author_person<\/code> enrichment filter for E-E-A-T fields.<\/li>\n<li>New: automatic Article schema \u2014 posts now emit an <code>Article<\/code> node (<code>{permalink}#article<\/code>) 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 \u2192 Article). Extensibility contract bumped to <code>1.4.0<\/code> \u2014 new <code>cddc_schema_blocks_page_content_type<\/code> filter (per-post type overrides, e.g. <code>NewsArticle<\/code>) and main-entity election API (<code>Schema_Graph::flag_main_entity()<\/code>) so addon content nodes replace the automatic Article instead of competing with it.<\/li>\n<li>New: FAQ and Review schemas now emit an <code>inLanguage<\/code> property derived from the site language (BCP-47, e.g. <code>en-US<\/code>). No configuration needed; overridable via the <code>cddc_schema_faq_output<\/code> \/ <code>cddc_schema_review_output<\/code> filters.<\/li>\n<li>Changed: unified JSON-LD output \u2014 the page now prints one <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> with a single <code>@graph<\/code> 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 <code>1.3.0<\/code> \u2014 new <code>cddc_schema_blocks_graph_nodes<\/code> filter.<\/li>\n<li>Changed: the FAQ block's <code>{permalink}#faq<\/code> node id is retired \u2014 its questions now live on the page's WebPage node (<code>@type: [\"WebPage\",\"FAQPage\"]<\/code>, <code>mainEntity<\/code>). FAQ rich results were retired by Google (2026-05-07), so no SERP feature depends on the old id.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Extensibility contract 1.1.0 \u2014 the shared schema-ui editor toolkit is now exposed to addons on <code>window.cddcSchema.ui<\/code> via the <code>cddc-schema-ui<\/code> script handle (SchemaBlockCard, SchemaFormSection, SchemaPreviewInline, DurationInput, and more).<\/li>\n<li>New: Extensibility contract 1.2.0 \u2014 added the <code>cddc_schema_blocks_settings_url<\/code> filter so a companion hosting the Settings screen elsewhere can correct internal links (admin notices, the plugins-list action link).<\/li>\n<li>New: \"Settings\" action link on the Plugins screen, next to Deactivate.<\/li>\n<li>New: WordPress Playground blueprint (<code>.wordpress-org\/blueprints\/blueprint.json<\/code>) powering the Live Preview button on the wp.org plugin directory.<\/li>\n<li>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.<\/li>\n<li>Fix: the Review block's <code>reviewBody<\/code> now falls back to the block's rendered HTML when the attribute isn't set explicitly.<\/li>\n<li>Removed: the dead <code>load_optional_integrations()<\/code> bootstrap and <code>Admin_Integration<\/code> companion-coupling code (unreachable without a package this plugin never ships) \u2014 the Settings screen registration is simpler and wp.org-review-clean as a result.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>New: FAQ summaries now show an animated +\/\u00d7 icon that rotates when an item opens. Pure CSS driven by the native <code>details[open]<\/code> state (no JS), mirrored in the editor and respecting <code>prefers-reduced-motion<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Review block now renders translatable labels through <code>__()<\/code> so strings reach the <code>.pot<\/code> and translations apply at render time.<\/li>\n<li>Compat: Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix (WordPress.org review): conflict admin notice no longer emits an inline <code>&lt;script&gt;<\/code> tag \u2014 the dismiss handler is now an enqueued asset (<code>assets\/admin\/conflict-notice.js<\/code>) wired via <code>data-*<\/code> attributes on the notice container. The notice is also gated to the plugin Settings page and <code>plugins.php<\/code> only.<\/li>\n<li>Fix (WordPress.org review): FAQ block render callback no longer echoes a <code>WP_HTML_Tag_Processor<\/code>-mutated HTML string. The wrapper <code>&lt;div&gt;<\/code> is composed from escape-aware core APIs, and per-<code>&lt;details&gt;<\/code> Interactivity API directives are now injected via a <code>render_block<\/code> filter scoped to FAQ-ancestor renders. Foreign <code>data-wp-*<\/code> directives on nested blocks are preserved.<\/li>\n<li>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.<\/li>\n<li>Fix: <code>useSlotFills<\/code> crash on older <code>@wordpress\/components<\/code>; the Advanced tab now derives its visibility from the internal fill bridge.<\/li>\n<li>Improvement: Completeness score redistributed to weigh Site Identity (75), Website (20) and Breadcrumbs (5) \u2014 previously only Site Identity counted, so the page could reach 100% while Website and Breadcrumbs were empty.<\/li>\n<li>New filter: <code>cddc_schema_blocks_is_settings_screen<\/code> lets integrations declare authoritatively when the React Settings app should be enqueued.<\/li>\n<li>Cleanup: removed dead code paths in <code>Admin_Integration<\/code>, dead <code>utils\/completeness-score.ts<\/code> \/ <code>utils\/json-ld-preview.ts<\/code> modules, the unused <code>HelpTip<\/code> component family and the divergent PHP <code>Site_Schema::get_completeness_score()<\/code> (the React UI is now the single source of truth for completeness).<\/li>\n<li>Fix: schema-conflict admin notice now links to the real settings screen (<code>Admin_Integration::get_settings_url()<\/code>) instead of guessing from <code>class_exists()<\/code>, so the link is correct in the fallback path where the shared admin package exists but its renderer is not yet available.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>FAQ Block with FAQPage schema<\/li>\n<li>FAQ Item child block<\/li>\n<li>Review Block with Review schema<\/li>\n<li>Support for 6 item types<\/li>\n<li>Settings page for block management<\/li>\n<li>Interactivity API for accordion<\/li>\n<\/ul>","raw_excerpt":"FAQ schema and Review schema blocks. Generate JSON-LD structured data, enable star ratings, and boost your rich snippets in Google Search.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302780"}],"author":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codedication"}],"wp:attachment":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302780"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302780"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302780"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302780"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302780"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}