| 开发者 |
codedication
pauloc |
|---|---|
| 更新时间 | 2026年8月15日 19:39 |
| 捐献地址: | 去捐款 |
| PHP版本: | 8.0 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
@graph array for multiple schemas<head>/wp-content/plugins/cddc-schema-blocks/No. Google decides whether to show rich snippets based on many factors. Proper schema markup improves your chances but doesn't guarantee display.
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.
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.
No! Just add blocks and fill in the fields. The plugin handles all the technical JSON-LD markup automatically.
Yes. All output follows Schema.org specifications and Google's structured data guidelines.
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.
Yes. You can add Review schema to any post type, including WooCommerce product pages.
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.
There is no limit. Add as many Question/Answer pairs as you need. All items are included in the FAQPage JSON-LD output.
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.
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 — connect it under Settings → Schema Blocks, or skip it and validate manually with Google's tools instead.
Yes. Assign a post type to "Article" or "Blog posting" under Settings → Content and matching posts automatically emit an Article node — headline, dates, author, publisher, primary image — merged into the same JSON-LD graph as your FAQ and Review blocks.
Yes. The Settings page includes a Breadcrumbs section that outputs a site-wide BreadcrumbList schema, with configurable separator and home label.
Yes. Settings → Schema Blocks → Block management lets you enable or disable the FAQ and Review blocks individually.
Yes. All strings are translation-ready, and every FAQ and Review schema automatically includes an inLanguage property derived from your site's language setting.
validgraph.com/api/v1/...) — the previous URL (wp-json/validgraph) never resolved, so validation requests always failed.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.WebSite node keeps referencing it instead.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.@ids 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.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.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.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.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.<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.{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.window.cddcSchema.ui via the cddc-schema-ui script handle (SchemaBlockCard, SchemaFormSection, SchemaPreviewInline, DurationInput, and more).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)..wordpress-org/blueprints/blueprint.json) powering the Live Preview button on the wp.org plugin directory.reviewBody now falls back to the block's rendered HTML when the attribute isn't set explicitly.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.details[open] state (no JS), mirrored in the editor and respecting prefers-reduced-motion.__() so strings reach the .pot and translations apply at render time.<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.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.useSlotFills crash on older @wordpress/components; the Advanced tab now derives its visibility from the internal fill bridge.cddc_schema_blocks_is_settings_screen lets integrations declare authoritatively when the React Settings app should be enqueued.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).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.