Codedication Schema Blocks
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 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 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 with price, currency, availability, condition, SKU, GTIN and MPN, brand, manufacturer and aggregate rating. Event – event rich results with start and end dates, attendance mode, status, a physical or virtual location, organizer and ticket offers. Local Business – local business markup 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 with employment type, hiring organization, location, posting and validity dates, and base salary. Breadcrumb – breadcrumb markup 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 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 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 and the Schema.org Validator. 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.
Top keywords
- schema32×2.35%
- page18×1.32%
- blocks17×1.25%
- cddc16×1.18%
- cddc schema16×1.18%
- author14×1.03%
- site12×0.88%
- output10×0.73%
- schema blocks9×0.66%
- type9×0.66%
- article8×0.59%
- graph8×0.59%
Opiner Me – Lightweight Star Rating & Review Form
Opiner Me is a lightweight WordPress plugin for adding star ratings, collecting user reviews, and displaying a simple opinion form anywhere on your site. It includes SEO-friendly JSON-LD review schema, built-in spam protection, and clean shortcodes for maximum flexibility. Perfect for blogs, service pages, portfolios, and any website that needs quick, minimal, and fast-loading feedback tools. Official website: Opiner Me WP Plugin Live demo: Check it out here Installation video: Watch on YouTube Donate link: Buy Me a Coffee Features Lightweight star rating and review plugin. Opinion and feedback form that fits any theme. Simple shortcodes to display form, rating, reviews, slider, and schema. Built-in spam protection via SpamGuard module. JSON-LD review schema for better SEO and rich results. Clean admin panel to manage user opinions and ratings. No external scripts, no bloat – performance-friendly. Why choose Opiner Me? Lightweight and fast – minimal code, no unnecessary assets. Simple to use – install, activate, add shortcode, done. SEO-ready – JSON-LD markup included by default. Clean UI – theme-agnostic design that blends with any layout. Modular architecture – extend or customize functionality easily. Spam protection included – built-in SpamGuard module. Flexible shortcodes – display form, list, rating, slider, or schema anywhere. Privacy-friendly – all data stays in your WordPress database. Use Cases Add star ratings to posts, pages, or custom post types. Collect quick user reviews with a simple opinion form. Display ratings and review lists anywhere using shortcodes. Show reviews in a rotating slider (PRO). Improve SEO with JSON-LD review schema. Gather lightweight feedback without heavy review plugins. Shortcodes [opiner_me] – display form and list together [opiner_me_form] – display only the opinion form [opiner_me_list] – display submitted reviews [opiner_me_rating] – display average rating [opiner_me_schema] – output JSON‑LD schema [opiner_me_slider] – display a rotating slider with user opinions (PRO) Opiner Me PRO The PRO version adds optional advanced features: Opinion slider shortcode. Email notifications for new opinions. Import/export tools for opinions (JSON format). Advanced opinion editor in the admin panel. License validation system with remote API check. Additional UI enhancements and workflow improvements. Video Quick installation video: Watch on YouTube Shows how to install and use Opiner Me in under 3 minutes. Performance Opiner Me is optimized for speed and minimal footprint: No external scripts or heavy assets. Lightweight codebase designed for fast loading. Minimal database usage. Works efficiently on shared hosting. Zero impact on Core Web Vitals. Compatibility Tested with WordPress 6.0‑7.0. Requires PHP 8.0 or higher. Works with any theme. Compatible with Classic Editor and Gutenberg. Privacy Opiner Me does not collect or transmit any personal data to external servers. All submitted opinions and ratings remain in your WordPress database.
Top keywords