Last Updated: 7 June 2026 Originally Published: 17 October 2025 By Shaiful Mozumder | Reviewed by David Brown
A UK recipe site had Rank Math Pro installed, schema configured, and the Google Rich Results Test returning valid results on every page. Rich snippets weren’t appearing. Six months of valid schema, zero rich results in the SERP.
The problem wasn’t missing schema. It was duplicate schema — Rank Math outputting an Article block and an Elementor template outputting its own Article block on the same page simultaneously. Google received two competing schema declarations for the same content, treated the page as ambiguous, and suppressed rich result eligibility entirely. Removing the Elementor schema output resolved it. Rich snippets appeared within four weeks.
This post goes deeper than the WordPress SEO: The Complete Guide to Optimising Your WordPress Site in 2026 could on this layer: duplicate schema conflict diagnosis first — the most common and least documented WordPress schema problem — then implementation, validation, and the specific schema types that produce rich results in 2026.
The angle most WordPress schema tutorials miss: schema that passes the Rich Results Test can still be suppressed if there are two valid blocks competing for the same page type.
Post Summary
- WordPress schema markup is structured data added to pages in JSON-LD format that tells Google what content type a page contains — enabling rich results like star ratings, FAQ dropdowns, and article bylines in the SERP
- The most common WordPress schema failure is not missing schema but duplicate schema — two plugins or a plugin and a page builder both outputting blocks for the same page type
- Rank Math and Yoast both generate schema automatically; neither detects or blocks schema output from other plugins or page builders
- The Google Rich Results Test validates schema syntax — it does not confirm rich result eligibility, which depends on additional quality signals Google does not disclose
- AI Overviews prioritise pages with valid structured data when constructing citations — FAQ schema in particular increases the probability of appearing in AI-generated answer blocks
- AI schema audit prompt: “Review the page source of [URL]. Identify all JSON-LD schema blocks present. Flag any duplicate @type declarations for the same page. Output as: Schema type | Source | Conflict status”
Table of Contents
ToggleThe Duplicate Schema Problem Most WordPress Sites Have and Don’t Know About
Most WordPress schema tutorials start with how to add schema. The more pressing question for most established WordPress sites is: how many schema sources are already running on this page?
Rank Math outputs schema. Yoast outputs schema. WooCommerce outputs Product schema on product pages. Some Elementor templates include schema blocks in their global settings. Some theme frameworks output their own Article or WebPage schema in the header. Each of these outputs is well-intentioned. Together, they create a conflict Google cannot resolve cleanly.
Google’s structured data documentation states that multiple schema blocks on a page are acceptable when they describe different entities — but when two blocks both declare @type: Article for the same page, Google must determine which to trust (Source: Google Search Central, 2024). In practice, the response is often suppression of rich result eligibility for the conflicting type — not an error in the Rich Results Test, but no rich results in the SERP.
Working on a UK recipe and lifestyle site using WordPress, Rank Math Pro, and Elementor, the GSC Enhancements report showed zero rich result impressions despite six months of valid schema on every post. The Rich Results Test returned no errors. The source of the conflict was an Elementor global template that included an Article schema block in its header output — invisible in the WordPress editor, present in every rendered page. Rank Math’s Article schema was also present. Two valid Article blocks, one page, suppressed eligibility. The expectation was that Rank Math was the only schema source active. It wasn’t.
View the page source of any WordPress post — Ctrl+U in Chrome — and search for application/ld+json. Every result is a schema block. Count the blocks with @type: Article or @type: WebPage. More than one of either is a conflict that needs resolving before any other schema work is worth doing.
Does WordPress Provide Structured Data Schema Automatically?
WordPress core does not output schema markup automatically — it has no built-in structured data functionality (Source: WordPress.org, 2024).
Schema on a WordPress site comes from one or more of these four sources: an SEO plugin (Rank Math, Yoast), a page builder (Elementor, Divi, Beaver Builder), a theme framework (Genesis, Kadence, Astra with schema settings enabled), and custom JSON-LD blocks added manually in Elementor Custom HTML widgets or WordPress block editor HTML blocks.
The distinction worth drawing here: WordPress giving you schema through a plugin is not the same as WordPress validating that schema or preventing conflicts between sources. No native WordPress function checks whether another plugin has already output schema for the current page type.
That absence of conflict detection is why the duplicate schema problem is so common on established WordPress sites — each source was added independently over time, each looked correct in isolation, and none flagged the conflict with the others.
The practical check: in Rank Math → Schema → Schema Generator on any post, you can see the schema Rank Math intends to output for that page. That view does not show you what Elementor, your theme, or WooCommerce is also outputting. The only complete picture comes from the rendered page source.
Rank Math vs Yoast: Schema Architecture Differences
Both Rank Math and Yoast generate JSON-LD schema. Their architecture differs in ways that affect how conflicts emerge and how you resolve them.
Rank Math outputs schema as a @graph array — a single JSON-LD block containing multiple schema entities linked by @id references (Source: Rank Math, 2024). This means one <script type="application/ld+json"> block in the page source covers Article, BreadcrumbList, WebPage, and Person (author) in a connected graph. Adding a second schema source that outputs its own Article block outside this graph creates a structural conflict — two Article entities with no shared @id anchors.
Yoast uses the same @graph architecture since version 11 (Source: Yoast, 2024). If both Rank Math and Yoast are active simultaneously — a configuration that occasionally occurs during plugin migration periods — both output a complete @graph block. The result is two full schema graphs on one page, which Google treats as a serious conflict.
| Schema Source | Output Format | Self-Contained | Detects Conflicts | Manual JSON-LD Support |
|---|---|---|---|---|
| Rank Math Pro | @graph array | Yes | No | Yes — Custom Schema module |
| Yoast SEO | @graph array | Yes | No | Via Yoast SEO Premium only |
| Elementor | Varies by template | No | No | Yes — Custom HTML widget |
| Theme frameworks | Varies | No | No | No |
| WooCommerce | Product @type only | Yes (product pages) | No | No |
The clean configuration for most WordPress sites: one schema plugin as the sole automated source (Rank Math or Yoast, not both), all page builder schema output disabled, and any custom schema added via a single Elementor Custom HTML widget per page where genuinely needed.
Pro Tip: In Rank Math → Titles & Meta → Post Types → Posts, confirm “Schema Type” is set to “Article” and that no other schema plugin is active simultaneously. Then open a live post in Chrome →
Ctrl+U→Ctrl+F→ searchld+json. Count the results. One block is correct. Two or more requires investigation — check Elementor global templates, theme schema settings, and any active plugin that touches structured data before assuming Rank Math is the sole source.
How to Add Schema Markup in WordPress: The Right Implementation Order
Schema implementation on WordPress follows a specific order — getting this sequence wrong produces the conflicts the previous sections describe.
Step 1 — Audit existing schema sources. Before adding any schema, view the source of three representative pages (homepage, a post, a category page) and count ld+json blocks. Disable or configure any non-SEO-plugin source that outputs @type: Article or @type: WebPage.
Step 2 — Configure your SEO plugin schema settings. In Rank Math → Titles & Meta → Post Types, set the default schema type for each content type: Posts → Article, Pages → WebPage, Products → Product. In Rank Math → Schema → Schema Generator on individual posts, override the default where the specific content type requires it (Recipe, HowTo, FAQ, Event).
Step 3 — Add FAQ schema where applicable. FAQ schema — which requires a dedicated FAQPage block listing Question and Answer pairs — is the schema type with the highest rich result visibility in 2026 for informational content (Source: Google Search Central, 2024). In Rank Math, add a FAQ schema block via the Schema Generator on posts with a FAQ section. The Q&A pairs in the schema must match the Q&A pairs in the page body exactly — Google cross-references the two.
Step 4 — Validate with Google Rich Results Test. Submit the live URL to the Rich Results Test at search.google.com/test/rich-results. A valid result confirms schema syntax is correct. It does not confirm rich result eligibility — eligibility depends on content quality, E-E-A-T signals, and page experience factors Google does not surface in the test.
Step 5 — Monitor GSC Enhancements report. GSC → Enhancements shows rich result status per schema type — Article, FAQ, HowTo, Review, and so on. A “Valid” status with zero impressions after four weeks indicates an eligibility issue, not a syntax issue. A “Warning” or “Error” status indicates a schema configuration problem to fix before eligibility can be assessed.
WordPress Schema Markup:
Boost Your Rich Snippets
Duplicate schema kills rich results. Here's the diagnosis, fix sequence, and schema types that work in 2026.
duplicate conflict removed
(Google, 2024)
errors in GSC (Ahrefs, 2024)
duplicate @type declarations
Valid schema can still suppress rich results. Two blocks declaring the same @type on one page creates a conflict Google cannot resolve — and often responds to by disabling rich result eligibility entirely.
📌 Case Study: UK Recipe & Lifestyle Site — Duplicate Schema Conflict
Rank Math Pro and an Elementor global template were both outputting Article schema on every post. The Rich Results Test showed no errors — both blocks were individually valid. Google received two competing Article declarations with no shared @id anchors and suppressed rich result eligibility. Removing the Elementor schema output resolved it within one crawl cycle.
Source: Google Search Central Rich Results documentation, 2024. Only these types are eligible for visual rich result enhancements in Google Search.
Getting this sequence wrong is how duplicate conflicts form. Audit first, implement second.
Audit existing schema sources — view source first
Open any WordPress post in Chrome → Ctrl+U → Ctrl+F → search ld+json. Count matches. More than one block with @type: Article or @type: WebPage is a conflict. Disable schema output from all sources except your SEO plugin before proceeding.
Configure SEO plugin schema defaults
In Rank Math → Titles & Meta → Post Types: set Posts → Article, Pages → WebPage, Products → Product. In Yoast: SEO → Search Appearance → Content Types → confirm schema type per content type. These become your site-wide schema baseline.
Add FAQ schema on posts with FAQ sections
In Rank Math → Schema Generator on individual posts, add a FAQPage block. Q&A pairs must match the FAQ section in the page body exactly — Google cross-references the two. Mismatches suppress FAQ rich result eligibility.
Validate with Google Rich Results Test
Submit the live URL to search.google.com/test/rich-results. A valid result confirms schema syntax. It does not confirm rich result eligibility — eligibility depends on content quality and E-E-A-T signals Google does not surface in the test.
Monitor GSC Enhancements report — 4-week check
GSC → Enhancements → select schema type. "Valid" status with zero impressions after 4 weeks = eligibility issue (fix: review content quality and E-E-A-T). "Warning" or "Error" = syntax issue (fix: correct in Schema Generator). Never confuse the two.
"@context": "https://schema.org", "@graph": [ { "@type": "Article", "@id": "https://yoursite.com/post/#article", "headline": "Your Post Title", "author": { "@type": "Person", "name": "Author Name" }, "datePublished": "2025-10-17", "dateModified": "2026-06-07" }, { "@type": "FAQPage", "@id": "https://yoursite.com/post/#faq", "mainEntity": [ { "@type": "Question", "name": "Your Q1?", "acceptedAnswer": { "@type": "Answer", "text": "Answer text..." } } ] } ]
Both use @graph arrays. The conflict risk and configuration options differ in ways that matter for WordPress sites using page builders.
| Feature | Rank Math Pro | Yoast SEO (Free) | Yoast SEO Premium |
|---|---|---|---|
| Output format | @graph array | @graph array | @graph array |
| @graph since version | v1.0 | v11.0 (2019) | v11.0 (2019) |
| Detects schema conflicts | No | No | No |
| Custom schema per post | Yes — Schema Generator | No | Yes — Schema Blocks |
| FAQ schema support | Yes — built-in | Block only (Gutenberg) | Yes — Schema Blocks |
| Article author @id linking | Yes — Person node | Yes — Person node | Yes — Person node |
| Manual JSON-LD support | Yes — Custom Schema | No (use Custom HTML) | Yes |
| Conflict with Elementor | If Elementor schema on | If Elementor schema on | If Elementor schema on |
| WooCommerce conflict risk | Product pages — check | Product pages — check | Product pages — check |
| Free tier available | Yes (limited schema) | Yes (full schema) | Paid only |
All figures from named, publicly verifiable sources.
Use in Claude, ChatGPT, or Perplexity. Replace bracketed fields with your own values.
Prompt 1 — Duplicate Schema Detector
Prompt 2 — AI Citation Readiness Audit
Prompt 3 — FAQ Schema Generator
Prompt 4 — GSC Enhancement Error Diagnosis
Schema Markup and AI Search: Why Structured Data Matters More in 2026
AI Overviews, Perplexity, and ChatGPT’s browsing mode all use structured data to extract and cite content from WordPress pages (Source: Google, 2024).
FAQ schema in particular increases citation probability in AI-generated responses — because the Question and Answer format maps directly to the query-answer structure that AI engines use when constructing responses. A page with valid FAQ schema gives the AI engine discrete, clearly labelled answer units it can surface without parsing surrounding prose context.
Article schema with author entity data — specifically a Person node with name, url, and sameAs properties linking to an established author profile — signals E-E-A-T to both Google’s quality systems and AI engines assessing source credibility for citation (Source: Google Search Central, 2024).
Two schema configurations that produce the highest AI citation lift on WordPress: first, FAQ schema with three to five question-answer pairs matched exactly to FAQ content in the page body; second, Article schema with a fully populated author node including a sameAs link to the author’s LinkedIn or Google Scholar profile.
Use this AI prompt to audit your WordPress schema for AI citation readiness: “Review the structured data on [URL]. Check for: valid Article @type with author entity, FAQ schema with question-answer pairs, BreadcrumbList, and any duplicate @type declarations. Score citation readiness 1–5 per schema element and identify the single highest-impact fix.”
Frequently Asked Questions
Does WordPress provide structured data schema automatically?
WordPress core does not output schema markup automatically — there is no built-in structured data functionality in WordPress itself. Schema on a WordPress site comes from SEO plugins like Rank Math or Yoast SEO, page builders like Elementor (through template settings or Custom HTML widgets), theme frameworks with schema settings, or custom JSON-LD blocks added manually. The absence of native conflict detection means multiple sources can output competing schema for the same page without triggering any warning in the WordPress admin.
What is a structured data schema?
Structured data schema is machine-readable code — typically written in JSON-LD format on WordPress — that describes the content of a page to search engines and AI crawlers. It uses standardised vocabulary from Schema.org to declare what type of content a page contains (Article, FAQPage, Product, Recipe) and provides specific attributes about that content (author name, publish date, question-answer pairs). When Google validates the schema and the page meets quality thresholds, it may display rich results — visual enhancements in the SERP such as star ratings, FAQ dropdowns, or article bylines.
How do you fix WordPress rich snippets not showing?
Start by viewing the page source and counting application/ld+json blocks. More than one block with the same @type value — particularly Article or WebPage — is a conflict that suppresses rich result eligibility even when each block is individually valid. Resolve the conflict by disabling schema output from all sources except your SEO plugin. Then validate the remaining schema in Google’s Rich Results Test. If the test passes but rich snippets still don’t appear after four weeks, check GSC → Enhancements for Warning or Error statuses — these surface eligibility issues the Rich Results Test does not catch. See the full WordPress SEO guide for the broader technical context.
WordPress Schema Markup: Your Next Step
Valid schema that never produces rich results is almost always a duplicate conflict — not a syntax error, not a missing block. The fix takes ten minutes once you know where to look: view source, count ld+json blocks, disable every schema source except your SEO plugin, revalidate.
The full technical SEO framework sits in the WordPress SEO: The Complete Guide to Optimising Your WordPress Site in 2026. For the mobile layer that determines whether Google can render the pages your schema is marking up, see WordPress Mobile SEO: Complete Guide to Mobile-First Optimisation.
Open Chrome on any WordPress post now → Ctrl+U → Ctrl+F → type ld+json → count the matches. If the count is above one, that’s your first fix before any other schema work begins.
References
Google. “Understand How Structured Data Works.” Google Search Central, 2024. https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data Supports: Google’s handling of multiple schema blocks on one page and rich result eligibility conditions.
Google. “FAQ Rich Results.” Google Search Central, 2024. https://developers.google.com/search/docs/appearance/structured-data/faqpage Supports: FAQ schema requirements — Q&A pairs must match page body content exactly.
Rank Math. “Schema Markup in Rank Math.” Rank Math Documentation, 2024. https://rankmath.com/kb/schema-markup/ Supports: Rank Math’s @graph array output architecture and Schema Generator configuration.
Yoast. “Yoast SEO Schema Output.” Yoast Documentation, 2024. https://yoast.com/features/schema/ Supports: Yoast’s @graph architecture since version 11 and the conflict risk of running both Rank Math and Yoast simultaneously.
Schema.org. “Schema.org Full Hierarchy.” Schema.org, 2024. https://schema.org/docs/full.html Supports: Standardised schema vocabulary — Article, FAQPage, Person, WebPage type definitions.
Google. “E-E-A-T and Author Entity Signals.” Google Search Central, 2024. https://developers.google.com/search/docs/fundamentals/creating-helpful-content Supports: Author entity data in Article schema as an E-E-A-T signal for both Google and AI citation systems.
Google. “Rich Results Test Documentation.” Google Search Central, 2024. https://developers.google.com/search/docs/appearance/structured-data/testing-tools Supports: Rich Results Test validating syntax only — not confirming rich result eligibility.







