{"id":355974,"date":"2026-09-15T09:32:50","date_gmt":"2026-09-15T09:32:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/t1-schema\/"},"modified":"2026-09-15T13:26:03","modified_gmt":"2026-09-15T13:26:03","slug":"teil1-schema-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/teil1-schema-manager\/","author":23433007,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.3.3","stable_tag":"2.3.3","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Teil1 Schema Manager","header_author":"teil1 development","header_description":"High-performance Schema.org JSON-LD markup with granular control. SaaS-grade visual editor for SEO professionals.","assets_banners_color":"abc0ee","last_updated":"2026-09-15 13:26:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/teil1.com\/t1-schema\/","header_author_uri":"https:\/\/teil1.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.3.2":{"tag":"2.3.2","author":"pvj7000","date":"2026-09-15 09:32:23","revision":3696610},"2.3.3":{"tag":"2.3.3","author":"pvj7000","date":"2026-09-15 13:26:03","revision":3697040}},"upgrade_notice":{"2.0.1":"<p>The post editor meta box is now read-only. Quick Add and the remove buttons are gone; use the &quot;Edit in t1 Schema&quot; link, which now opens the editor for that post. Existing local schemas are untouched.<\/p>","2.0.0":"<p>Conflict suppression is now opt-in. If you relied on t1 Schema removing another plugin&#039;s JSON-LD, enable it under Help \u2192 Settings after updating, or you may see duplicate structured data.<\/p>","1.5.0":"<p>Security hardening and WordPress.org compliance. Recommended update for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3696610,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3696610,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3696610,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3696610,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.3.2","2.3.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3696610,"resolution":"1","location":"assets","locale":"","width":1280,"height":1684},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3696610,"resolution":"2","location":"assets","locale":"","width":1280,"height":1080},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3696610,"resolution":"3","location":"assets","locale":"","width":1280,"height":1690},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3696610,"resolution":"4","location":"assets","locale":"","width":1280,"height":1036},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3696610,"resolution":"5","location":"assets","locale":"","width":1280,"height":1411},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3696610,"resolution":"6","location":"assets","locale":"","width":1280,"height":1682}},"screenshots":{"1":"Globals dashboard \u2014 review the internal 0\u2013100 Schema Quality Score, resolve action items, and manage reusable site variables.","2":"Visual Rule Builder \u2014 target WordPress contexts, configure schema properties, and inspect the live JSON-LD output.","3":"Schema Rules \u2014 review conditional coverage and priorities for posts, pages, archives, and taxonomies.","4":"Site Map Coverage Audit \u2014 identify URL contexts with configured or missing structured data.","5":"Pages &amp; Posts \u2014 inspect and edit per-page local schemas and global override behavior.","6":"Help &amp; Settings \u2014 browse dynamic variables and configure conflict suppression and uninstall behavior."}},"plugin_section":[],"plugin_tags":[2516,2998,1117,1121,286],"plugin_category":[45,55],"plugin_contributors":[280821],"plugin_business_model":[],"class_list":["post-355974","plugin","type-plugin","status-publish","hentry","plugin_tags-json-ld","plugin_tags-rich-snippets","plugin_tags-schema","plugin_tags-structured-data","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-pvj7000","plugin_committers-pvj7000"],"banners":{"banner":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/banner-772x250.png?rev=3696610","banner_2x":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/banner-1544x500.png?rev=3696610","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/icon-128x128.png?rev=3696610","icon_2x":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/icon-256x256.png?rev=3696610","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-1.png?rev=3696610","caption":"Globals dashboard \u2014 review the internal 0\u2013100 Schema Quality Score, resolve action items, and manage reusable site variables."},{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-2.png?rev=3696610","caption":"Visual Rule Builder \u2014 target WordPress contexts, configure schema properties, and inspect the live JSON-LD output."},{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-3.png?rev=3696610","caption":"Schema Rules \u2014 review conditional coverage and priorities for posts, pages, archives, and taxonomies."},{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-4.png?rev=3696610","caption":"Site Map Coverage Audit \u2014 identify URL contexts with configured or missing structured data."},{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-5.png?rev=3696610","caption":"Pages &amp; Posts \u2014 inspect and edit per-page local schemas and global override behavior."},{"src":"https:\/\/ps.w.org\/teil1-schema-manager\/assets\/screenshot-6.png?rev=3696610","caption":"Help &amp; Settings \u2014 browse dynamic variables and configure conflict suppression and uninstall behavior."}],"raw_content":"<!--section=description-->\n<p>Teil1 Schema Manager helps you create and control Schema.org JSON-LD without editing theme code. Build site-wide schemas, conditional rules, and per-page overrides from a visual WordPress dashboard.<\/p>\n\n<p>Structured data can help search engines and AI-powered discovery systems interpret page entities and relationships. It does not guarantee rich results, search rankings, AI citations, or inclusion in AI Overviews.<\/p>\n\n<p><strong>Global Schemas<\/strong> \u2013 Site-wide markup that fires on every page (Organization, WebSite, etc.)<\/p>\n\n<p><strong>Schema Rules<\/strong> \u2013 Conditional templates that target specific page types, archives, taxonomies, and custom post types. Rules support AND logic for precise targeting.<\/p>\n\n<p><strong>Local Overrides<\/strong> \u2013 Per-page schemas stored in post meta for granular control, with an override toggle for same-type resolution.<\/p>\n\n<h4>Schema Quality Score<\/h4>\n\n<p>The dashboard's internal 0\u2013100 Schema Quality Score summarizes configured coverage, required and recommended properties, schema depth, and type diversity. It is a diagnostic for improving your configuration, not a Google ranking or Rich Results score.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Visual Schema Editor<\/strong> \u2014 Build schemas with a property-by-property editor, live JSON-LD preview, and Rich Snippet preview.<\/li>\n<li><strong>Dynamic Variables<\/strong> \u2014 Use <code>{{post_title}}<\/code>, <code>{{post_date}}<\/code>, <code>{{featured_image_url}}<\/code>, <code>{{meta:custom_key}}<\/code>, and 30+ variables that resolve at render time.<\/li>\n<li><strong>Custom Variables<\/strong> \u2014 Define reusable site-wide constants (phone, address, logo) accessible as <code>{{custom.key}}<\/code> in any schema.<\/li>\n<li><strong>Schema Quality Score<\/strong> \u2014 Review an internal 0\u2013100 diagnostic based on configured coverage, required and recommended properties, schema depth, and type diversity.<\/li>\n<li><strong>Health Validation<\/strong> \u2014 Every schema is validated against its type definition. Errors, warnings, and fix suggestions are shown inline.<\/li>\n<li><strong>Site Map<\/strong> \u2014 Hierarchical view of every URL context on your site with schema coverage indicators and one-click rule creation.<\/li>\n<li><strong>Recommended Templates<\/strong> \u2014 Sensible default rules (Article for posts, WebPage for pages, etc.) that you opt into \u2014 never auto-activated.<\/li>\n<li><strong>34 Built-In Schema Types<\/strong> \u2014 Organization, Article, Product, FAQPage, HowTo, Event, VideoObject, Service, and more.<\/li>\n<li><strong>WooCommerce Compatible<\/strong> \u2014 <code>product<\/code> works as a condition like any post type, plus dynamic <code>{{product_price}}<\/code>, <code>{{product_availability}}<\/code>, and <code>{{product_rating}}<\/code> variables. Variable products receive <code>AggregateOffer<\/code> price ranges, and optional conflict suppression can remove overlapping WooCommerce Product, Review, BreadcrumbList, and WebSite markup.<\/li>\n<li><strong>WP-CLI<\/strong> \u2014 Full command suite: create, inspect, render, health-check, export, import, coverage audit, and diagnostics.<\/li>\n<li><strong>Admin Bar Indicator<\/strong> \u2014 Shows active schema count on frontend pages with a dropdown listing each type.<\/li>\n<li><strong>Post Editor Meta Box<\/strong> \u2014 Compact sidebar panel showing the local schemas on the current post with health badges, and a link straight into the full editor for that post.<\/li>\n<li><strong><code>@graph<\/code> Pattern<\/strong> \u2014 Multiple schemas on the same page are output in a single <code>&lt;script&gt;<\/code> tag using the <code>@graph<\/code> array.<\/li>\n<li><strong><code>@id<\/code>-Based Merging<\/strong> \u2014 Schemas sharing the same <code>@id<\/code> are merged into a single node, eliminating duplicates.<\/li>\n<li><strong>Auto BreadcrumbList<\/strong> \u2014 Hierarchical pages with ancestors automatically get a BreadcrumbList schema.<\/li>\n<li><strong>Developer Hooks<\/strong> \u2014 Filters for capability, JSON-LD output, variable resolution, condition matching, and author data.<\/li>\n<\/ul>\n\n<h4>Compatibility and Duplicate Schema<\/h4>\n\n<p>Teil1 Schema Manager can run alongside Yoast SEO, Rank Math, SEOPress, and AIOSEO because it does not change their titles, descriptions, sitemaps, or other SEO features. If two plugins output the same Schema.org type on a page, however, duplicate JSON-LD can result. Disable the overlapping schema output in the other SEO plugin when you configure the same type here.<\/p>\n\n<p>For WooCommerce, the optional <strong>Suppress conflicting schema output<\/strong> setting removes only WooCommerce's Product, Review, BreadcrumbList, or WebSite markup when Teil1 Schema Manager renders the same type on that request. It does not merge arbitrary third-party schema graphs or disable unrelated WooCommerce structured data.<\/p>\n\n<h4>Who Is This For?<\/h4>\n\n<ul>\n<li><strong>SEO professionals<\/strong> who need precise control over structured data across complex WordPress sites.<\/li>\n<li><strong>Developers<\/strong> managing multi-CPT architectures with conditional schema requirements.<\/li>\n<li><strong>Agencies<\/strong> that need a scalable, rule-based approach to Schema.org markup.<\/li>\n<\/ul>\n\n<h4>What This Plugin Does NOT Do<\/h4>\n\n<ul>\n<li>It does not auto-generate schemas from your content \u2014 you control what gets output.<\/li>\n<li>It does not add any visible output to your frontend \u2014 only a <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> tag in <code>&lt;head&gt;<\/code>.<\/li>\n<li>It does not phone home, track users, or load external assets. Everything runs locally.<\/li>\n<\/ul>\n\n<h4>Source Code<\/h4>\n\n<p>The React admin UI is built with Vite. Source code and build tools are available on <a href=\"https:\/\/github.com\/teil1-com\/t1-schema\">GitHub<\/a>.<\/p>\n\n<h4>Official Website<\/h4>\n\n<p>Learn more, view documentation, and find examples on the official <a href=\"https:\/\/teil1.com\/t1-schema\/\">Teil1 Schema Manager website<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>teil1-schema-manager<\/code> directory to <code>\/wp-content\/plugins\/<\/code>, or install directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Navigate to <strong>Teil1 Schema Manager<\/strong> in the admin sidebar.<\/li>\n<\/ol>\n\n<p>On first activation, the plugin:<\/p>\n\n<ul>\n<li>Creates two database tables (<code>t1schema_globals<\/code> and <code>t1schema_rules<\/code>).<\/li>\n<li>Seeds a default <strong>Organization<\/strong> and <strong>WebSite<\/strong> schema using your site name and URL.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20with%20any%20theme%3F\"><h3>Does this plugin work with any theme?<\/h3><\/dt>\n<dd><p>Yes. Teil1 Schema Manager outputs a <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> tag in <code>&lt;head&gt;<\/code> and has no dependency on any theme.<\/p><\/dd>\n<dt id=\"does%20it%20conflict%20with%20other%20seo%20plugins%3F\"><h3>Does it conflict with other SEO plugins?<\/h3><\/dt>\n<dd><p>Teil1 Schema Manager only outputs JSON-LD structured data. It does not modify meta tags, sitemaps, or other SEO elements. It can run alongside Yoast SEO, Rank Math, SEOPress, and AIOSEO, but overlapping schema types should be disabled in the other plugin to prevent duplicate JSON-LD.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. <code>product<\/code> is treated as a regular post type, so it works with Global Schemas, Rules, and Local Overrides without extra setup, and dynamic variables like <code>{{product_price}}<\/code> and <code>{{product_availability}}<\/code> are available once WooCommerce is active. Variable products (size\/color options) using <code>{{product_price}}<\/code> automatically get an accurate <code>AggregateOffer<\/code> price range instead of just their cheapest variation. WooCommerce also outputs its own Product\/Review\/BreadcrumbList\/WebSite JSON-LD by default \u2014 turn on \"Suppress conflicting schema output\" under Help \u2192 Settings and Teil1 Schema Manager will automatically remove only the WooCommerce output that would otherwise duplicate a type you've configured.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Your data (schemas, rules, custom variables) stays in the database. If you delete the plugin and have enabled the \"Delete data on uninstall\" setting, all data is removed.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20custom%20post%20types%3F\"><h3>Can I use this with custom post types?<\/h3><\/dt>\n<dd><p>Yes. All registered public post types appear automatically in the condition dropdown, the post type filter, and the Site Map.<\/p><\/dd>\n<dt id=\"what%20are%20dynamic%20variables%3F\"><h3>What are dynamic variables?<\/h3><\/dt>\n<dd><p>Variables like <code>{{post_title}}<\/code> are placeholders that resolve to actual values at render time. This lets you create one rule that works across hundreds of pages. See the Help tab in the dashboard for the full variable reference.<\/p><\/dd>\n<dt id=\"can%20i%20export%20and%20import%20schemas%20between%20sites%3F\"><h3>Can I export and import schemas between sites?<\/h3><\/dt>\n<dd><p>Yes. Use <code>wp teil1-schema-manager export &gt; backup.json<\/code> and <code>wp teil1-schema-manager import backup.json<\/code> via WP-CLI, or export the JSON from the dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3.3<\/h4>\n\n<ul>\n<li>Documentation: Added the official Teil1 Schema Manager website and set the plugin homepage to its dedicated teil1 landing page.<\/li>\n<li>Directory: Improved the short description, feature tags, screenshot captions, Quality Score explanation, and compatibility guidance.<\/li>\n<li>Documentation: Added conservative guidance about structured data for AI-powered discovery without promising rankings, rich results, AI citations, or AI Overview inclusion.<\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>Compliance: Updated every gettext call and the plugin header to the confirmed WordPress.org slug and text domain, <code>teil1-schema-manager<\/code>.<\/li>\n<li>Security: WP-CLI exports now write JSON only to stdout. Use shell redirection to choose the destination file, preventing a command argument from overwriting arbitrary writable paths.<\/li>\n<li>Security: Escaped all custom table names before interpolating them into REST API queries.<\/li>\n<li>Fix: REST requests with query parameters now work on clean WordPress installations using plain permalinks.<\/li>\n<li>Fix: WP-CLI schema JSON input now uses <code>--schema-json<\/code>, avoiding WP-CLI's reserved <code>--json<\/code> format shortcut.<\/li>\n<li>Fix: <code>wp teil1-schema-manager doctor<\/code> now counts schema validation errors in its final result.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Compliance: Set Tested up to 7.1.<\/li>\n<li>Interim submission build; superseded after WordPress.org confirmed the plugin slug is <code>teil1-schema-manager<\/code>.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Compliance: Admin bar styles are now registered with <code>wp_enqueue_style()<\/code> instead of an inline <code>&lt;style&gt;<\/code> tag.<\/li>\n<li>Compliance: Removed the remote Gravatar example URL and the Google Fonts stylesheet from the admin UI. Fonts use the system stack; all plugin assets are local.<\/li>\n<li>Compliance: Plugin display name is now <strong>Teil1 Schema Manager<\/strong>. Existing options, tables, hooks, and the <code>wp t1-schema<\/code> CLI command are unchanged.<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Fix: Escape custom table names with <code>esc_sql()<\/code> before interpolating them into SQL, which clears Plugin Check's UnescapedDBParameter warnings.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fix: Move the Vite asset manifest out of the hidden <code>assets\/.vite\/<\/code> folder so the distribution zip passes WordPress.org Plugin Check (hidden files are not permitted).<\/li>\n<li>Fix: Drop the sixth readme tag. WordPress.org allows a maximum of five.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Feature: Variable WooCommerce products (size\/color options, etc.) now get an accurate <code>AggregateOffer<\/code> \u2014 <code>lowPrice<\/code>, <code>highPrice<\/code>, and <code>offerCount<\/code> \u2014 instead of <code>{{product_price}}<\/code> understating them at their cheapest variation. Computed the same way WooCommerce's own structured data does, so the numbers always agree. Products with one effective price across all variations are unaffected.<\/li>\n<li>Feature: New <code>AggregateOffer<\/code> schema type in the type registry (34 built-in types total).<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Feature: Automatic WooCommerce compatibility. When \"Suppress conflicting schema output\" is on, t1 Schema detects which schema types it is about to render on the current page and removes only the matching WooCommerce structured data (Product, Review, BreadcrumbList, or WebSite) \u2014 no more duplicate JSON-LD on stores running both.<\/li>\n<li>Feature: Nine WooCommerce dynamic variables \u2014 <code>{{product_price}}<\/code>, <code>{{product_regular_price}}<\/code>, <code>{{product_sale_price}}<\/code>, <code>{{product_currency}}<\/code>, <code>{{product_sku}}<\/code>, <code>{{product_availability}}<\/code>, <code>{{product_rating}}<\/code>, <code>{{product_review_count}}<\/code>, <code>{{product_brand}}<\/code>. Only listed in the Help tab when WooCommerce is active.<\/li>\n<li>Improvement: <code>wp t1-schema doctor<\/code> reports WooCommerce detection and suppression status alongside the existing conflict checks.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fix: Corrected the plugin and author URLs. The previous domain did not resolve, so the plugin homepage and author links were dead.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li><strong>Breaking:<\/strong> The post editor meta box is now read-only. Quick Add and the per-schema remove buttons have been removed \u2014 both only applied on post save, gave no feedback, and Quick Add produced an empty schema that failed validation for most types. Editing happens in the full editor.<\/li>\n<li>Feature: The meta box link opens the full editor on the schemas for that specific post instead of the dashboard.<\/li>\n<li>Improvement: The local schema endpoint returns the post title, so a linked editor shows the right heading before anything else loads.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>First release on the WordPress.org Plugin Directory.<\/li>\n<li><strong>Breaking:<\/strong> Conflict suppression is now opt-in and disabled by default. Previously t1 Schema removed another plugin's schema output automatically. Enable it under Help \u2192 Settings if you see duplicate JSON-LD.<\/li>\n<li>Feature: Settings panel in the Help tab, covering conflict suppression and data removal on uninstall.<\/li>\n<li>Fix: Uninstall now drops the schema rules table alongside the globals table.<\/li>\n<li>Security: Direct-access guards added to every PHP file.<\/li>\n<li>Security: Meta box form input is unslashed before sanitizing.<\/li>\n<li>Improvement: Removed the <code>?t1debug<\/code> diagnostic panel from the admin screen. Use <code>wp t1-schema doctor<\/code> instead.<\/li>\n<li>Improvement: Tested against WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Security hardening, i18n, readme, and directory-compliance groundwork.<\/li>\n<li>Fix: Health validator false positives for CollectionPage types.<\/li>\n<li>Fix: Context-aware validation \u2014 recommended property warnings downgraded to infos for rules.<\/li>\n<li>Fix: Custom variables (<code>{{custom.*}}<\/code>) now resolve in admin preview panels.<\/li>\n<li>Improvement: All SQL queries use prepared statements.<\/li>\n<li>Improvement: Output escaping hardened across all PHP files.<\/li>\n<li>Improvement: All user-facing strings wrapped for translation.<\/li>\n<\/ul>\n\n<h4>1.4.9<\/h4>\n\n<ul>\n<li>Feature: <code>@id<\/code> reference badge in property editor.<\/li>\n<li>Feature: <code>child_of_page<\/code> condition type \u2014 target all descendants of a parent page.<\/li>\n<li>Feature: Copy button for JSON-LD preview panel.<\/li>\n<li>Feature: Custom author resolution hooks (<code>t1schema_author_name<\/code>, etc.).<\/li>\n<li>Fix: Variable regex allows digits for <code>{{meta:_custom_key_123}}<\/code>.<\/li>\n<li>Fix: CollectionPage added to schema registry.<\/li>\n<li>Fix: Dashboard health resolves variables before <code>@id<\/code> matching.<\/li>\n<\/ul>\n\n<h4>1.4.6<\/h4>\n\n<ul>\n<li>Initial release. Recursive schema builder with visual editor.<\/li>\n<\/ul>","raw_excerpt":"Visual Schema.org JSON-LD manager for rich snippets, with conditional rules, quality scoring, @graph output, and WooCommerce support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/355974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=355974"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pvj7000"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=355974"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=355974"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=355974"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=355974"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=355974"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=355974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}