{"id":153,"date":"2026-10-24T11:29:12","date_gmt":"2026-10-24T09:29:12","guid":{"rendered":"https:\/\/www.imwaa.com\/blog\/?page_id=153"},"modified":"2026-10-28T14:20:43","modified_gmt":"2026-10-28T13:20:43","slug":"json-ld-seo-wordpress-page","status":"publish","type":"page","link":"https:\/\/www.imwaa.com\/blog\/json-ld-seo-wordpress-page\/","title":{"rendered":"How to add JSON-LD SEO to a WordPress page"},"content":{"rendered":"<style>\/* FIX LAYOUT SEO SEMANTIC *\/.entry-content:has(.seo-semantic-hero){padding:0!important;margin:0!important;max-width:100%!important;width:100%!important}article:has(.seo-semantic-hero)>h1,article:has(.seo-semantic-hero) .entry-title,article:has(.seo-semantic-hero) .post-title,main:has(.seo-semantic-hero)>h1{display:none!important}main:has(.seo-semantic-hero){padding-top:0!important}.seo-semantic-hero{width:100vw!important;max-width:100vw!important;position:relative;left:50%;margin-left:-50vw!important;background-color:#020617!important;box-sizing:border-box}.seo-semantic-hero .section-hero{width:100%!important;max-width:100%!important;padding:60px 20px!important;min-height:auto!important;display:flex;align-items:center;box-sizing:border-box;background-color:#020617!important}.seo-semantic-hero .hero-content{width:100%;max-width:900px;margin:0 auto;padding:0 15px;text-align:center;box-sizing:border-box}.seo-semantic-hero .section-hero h1{margin-top:0!important;margin-bottom:20px!important;font-size:2.5rem!important;line-height:1.2!important}.seo-semantic-hero~section{width:100vw!important;max-width:100vw!important;position:relative;left:50%;margin-left:-50vw!important;box-sizing:border-box}.seo-semantic-hero~section .container{width:100%!important;max-width:100%!important;padding-left:15px!important;padding-right:15px!important;margin:0 auto!important;box-sizing:border-box}@media(max-width:768px){.seo-semantic-hero~section .container{padding-left:15px!important;padding-right:15px!important}.seo-semantic-hero~section .card{padding:22px!important;margin:0!important}.seo-semantic-hero~section .card h3{font-size:1.2rem!important;margin-bottom:10px!important}.seo-semantic-hero~section .card p{font-size:0.95rem!important;line-height:1.5!important}.seo-semantic-hero~section.section{padding:40px 0!important}.seo-semantic-hero .section-hero{padding:50px 15px!important}.seo-semantic-hero .section-hero h1{font-size:1.8rem!important;margin-bottom:15px!important}.seo-semantic-hero .section-hero p{font-size:1rem!important}.seo-semantic-hero~section .terminal-box{padding:12px!important;font-size:0.8rem!important}}@media(min-width:992px){.seo-semantic-hero .section-hero{padding-top:80px!important;padding-bottom:60px!important}}<\/style>\n<div class=\"seo-semantic-hero\">\n<section class=\"section-hero\" aria-labelledby=\"hero-pagina-title\">\n<div class=\"hero-bg\"><\/div>\n<div class=\"hero-content\">\n      <span class=\"badge text-primary\">SEO Semantic Plugin \u00b7 User Manual<\/span><\/p>\n<h1 id=\"hero-pagina-title\">How to add JSON-LD SEO to a WordPress page<\/h1>\n<p style=\"font-size: 1.1rem; max-width: 800px; margin: 0 auto 20px auto;\">\n        This is a WordPress <strong>page<\/strong>. Unlike a <a href=\"https:\/\/www.imwaa.com\/blog\/json-ld-seo-su-wordpress\/\" title=\"JSON-LD SEO guide for a WordPress post: Article entity and reviews\" style=\"color: var(--primary); text-decoration: underline;\">WordPress post<\/a>, where you configure the &#8220;content&#8221;, here you build the structure of the <strong>container<\/strong>. You tell the page whether it is a Collection, a Product, a Service, or an institutional page.\n      <\/p>\n<p style=\"margin-bottom: 30px; color: var(--text-sub);\">\n        The plugin does not inject code fragments. It builds a coherent <strong>Knowledge Graph<\/strong>. This prevents content cannibalization and lets Google and AI bots (such as ChatGPT and Gemini) understand the relationships between your pages.\n      <\/p>\n<p>      <a href=\"#cosa-fa-il-plugin\" class=\"btn btn-primary\" title=\"Discover what the SEO Semantic plugin does for a page\">What the plugin does for you<\/a>\n    <\/div>\n<\/section>\n<\/div>\n<section id=\"cosa-fa-il-plugin\" class=\"section\" aria-labelledby=\"title-cosa-fa\">\n<div class=\"container\">\n<div class=\"centered-header\">\n<h2 id=\"title-cosa-fa\">What the SEO Semantic plugin does on a page<\/h2>\n<p>The interface adapts to the type of container you choose. No useless fields, no ontological errors. Here are the four main scenarios you can configure.<\/p>\n<\/p><\/div>\n<div class=\"grid-2\">\n<div class=\"card\">\n<div class=\"card-icon\" aria-hidden=\"true\">\ud83d\udce6<\/div>\n<h3>1. CollectionPage (Pillar \/ Hub)<\/h3>\n<p>If the page is a list that gathers other pages (e.g. &#8220;All Services&#8221;), choose <code>CollectionPage<\/code>. The plugin generates a node that helps the crawler understand the context and prevents cannibalization.<\/p>\n<p style=\"font-size: 0.9rem; color: var(--text-sub);\"><em>Note:<\/em> Google does not provide Rich Snippets for CollectionPages, but the Schema Validator reads them perfectly. FAQs are intentionally disabled on this type: a collection does not need FAQs, it is a container.<\/p>\n<\/p><\/div>\n<div class=\"card\">\n<div class=\"card-icon\" aria-hidden=\"true\">\ud83d\udee0\ufe0f<\/div>\n<h3>2. Service<\/h3>\n<p>If the page describes a service (e.g. &#8220;SEO Consulting&#8221;), choose <code>Service<\/code>. The plugin links the <code>WebPage<\/code> to its <code>mainEntity<\/code>, declaring the provider and the area served.<\/p>\n<p style=\"font-size: 0.9rem; color: var(--text-sub);\"><em>Note:<\/em> Here too, the Rich Results Test may tell you &#8220;No items detected&#8221; (unless you have reviews). This is normal: a Service has no bare visual snippet, but its ontology is perfect.<\/p>\n<\/p><\/div>\n<div class=\"card\">\n<div class=\"card-icon\" aria-hidden=\"true\">\ud83d\uded2<\/div>\n<h3>3. Product<\/h3>\n<p>If you sell a physical or digital product, choose <code>Product<\/code>. Fill in price, currency, availability, and brand. The plugin will generate a complete graph with an <code>Offer<\/code>.<\/p>\n<p style=\"font-size: 0.9rem; color: var(--text-sub);\"><em>Note:<\/em> Here the Rich Results Test lights up! You will see the &#8220;Product snippet&#8221; and the &#8220;Merchant listings&#8221;. If you do not add genuine reviews, it will give you yellow warnings (non-critical) for the missing <code>AggregateRating<\/code>.<\/p>\n<\/p><\/div>\n<div class=\"card\">\n<div class=\"card-icon\" aria-hidden=\"true\">\ud83c\udfe2<\/div>\n<h3>4. Institutional Pages<\/h3>\n<p>For About Us, Privacy, or Contact, choose the correct type (e.g. <code>AboutPage<\/code>). These pages do not need Rich Snippets, but they must be linked to the site and the organization to strengthen EEAT.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"section section-alt\" aria-labelledby=\"title-immagini\">\n<div class=\"container\">\n<div class=\"centered-header\">\n<h2 id=\"title-immagini\">The plugin panel in action<\/h2>\n<p>This is what the interface looks like when you work on a page.<\/p>\n<\/p><\/div>\n<div class=\"grid-2\">\n<div class=\"card\" style=\"padding: 15px;\">\n        <img decoding=\"async\" src=\"https:\/\/www.imwaa.com\/blog\/wp-content\/uploads\/2026\/10\/pannello-semantic-demo.jpg\" alt=\"SEO Semantic plugin panel on a WordPress page\" title=\"SEO Semantic plugin interface for a page\" style=\"border-radius: var(--radius-sm); width: 100%; display: block;\"><\/p>\n<p class=\"text-center\" style=\"margin: 10px 0 0 0; font-size: 0.9rem; color: var(--text-sub);\">The basic page configuration<\/p>\n<\/p><\/div>\n<div class=\"card\" style=\"padding: 15px;\">\n        <img decoding=\"async\" src=\"https:\/\/www.imwaa.com\/blog\/wp-content\/uploads\/2026\/10\/pannello-semantic-demo-collectionpage.jpg\" alt=\"Detail of the SEO semantics plugin panel - option to add a collection page\" title=\"Collection Page configuration\" style=\"border-radius: var(--radius-sm); width: 100%; display: block;\"><\/p>\n<p class=\"text-center\" style=\"margin: 10px 0 0 0; font-size: 0.9rem; color: var(--text-sub);\">Choosing the Collection Page<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"section\" aria-labelledby=\"title-prova\">\n<div class=\"container\">\n<div class=\"centered-header\">\n<h2 id=\"title-prova\">The Proof: One Single Graph, Zero Errors<\/h2>\n<p>Traditional plugins inject code fragments. SEO Semantic builds a single <code>@graph<\/code>, linking the page to the site&#8217;s main entity and to the other sections. Here is the actual code generated for this page (set as a <code>CollectionPage<\/code>).<\/p>\n<\/p><\/div>\n<div class=\"card\" style=\"margin-bottom: 30px; padding: 30px;\">\n<h3 style=\"color: var(--primary);\">The Unified Graph (CollectionPage + FAQ)<\/h3>\n<p>Note how the <code>WebPage<\/code> declares its <code>isPartOf<\/code> towards the <code>WebSite<\/code> and its <code>about<\/code> towards an external entity, while the <code>significantLink<\/code> properties create semantic bridges to the other guides. This helps the crawler understand the context and prevents cannibalization.<\/p>\n<div class=\"terminal-box\" style=\"background: #1e1e1e; overflow-x: auto; padding: 20px;\">\n<pre style=\"margin: 0; color: #d4d4d4; font-family: var(--font-mono); font-size: 0.85rem;\"><code><span style=\"color: #00C853;\">\/\/ Excerpt of the generated Knowledge Graph<\/span>\r\n{\r\n  <span style=\"color: #06B6D4;\">\"@context\"<\/span>: \"https:\/\/schema.org\",\r\n  <span style=\"color: #06B6D4;\">\"@graph\"<\/span>: [{\r\n    <span style=\"color: #06B6D4;\">\"@type\"<\/span>: \"CollectionPage\",\r\n    <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"https:\/\/www.imwaa.com\/blog\/json-ld-seo-su-pagina-wordpress\/#webpage\",\r\n    <span style=\"color: #06B6D4;\">\"isPartOf\"<\/span>: { <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"https:\/\/www.imwaa.com\/blog\/#website\" },\r\n    <span style=\"color: #06B6D4;\">\"about\"<\/span>: { <span style=\"color: #06B6D4;\">\"@type\"<\/span>: \"Thing\", <span style=\"color: #06B6D4;\">\"name\"<\/span>: \"Wordpress seo\" },\r\n    <span style=\"color: #06B6D4;\">\"significantLink\"<\/span>: [\"https:\/\/www.imwaa.com\/blog\/json-ld-seo-su-wordpress\/#webpage\"]\r\n  }, {\r\n    <span style=\"color: #06B6D4;\">\"@type\"<\/span>: \"FAQPage\",\r\n    <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"https:\/\/www.imwaa.com\/blog\/json-ld-seo-su-pagina-wordpress\/#faq\",\r\n    <span style=\"color: #06B6D4;\">\"isPartOf\"<\/span>: { <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"...\/#webpage\" }\r\n  }]\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div style=\"margin-top: 20px; display: flex; gap: 20px; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 250px; border-left: 4px solid var(--accent-green); padding-left: 15px;\">\n<p style=\"margin: 0; font-size: 0.9rem;\"><strong>Schema Validator:<\/strong><br \/>0 Errors, 0 Warnings. 3 Items (CollectionPage, WebSite, FAQPage).<\/p>\n<\/p><\/div>\n<div style=\"flex: 1; min-width: 250px; border-left: 4px solid var(--accent-orange); padding-left: 15px;\">\n<p style=\"margin: 0; font-size: 0.9rem;\"><strong>Rich Results Test:<\/strong><br \/>&#8220;No items detected&#8221;. This is correct: CollectionPages do not generate visual snippets in SERP.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"card\" style=\"margin-bottom: 30px; padding: 30px;\">\n<h3 style=\"color: var(--accent-purple);\">Service (or Product) case: the Content replaces the Container<\/h3>\n<p>If, instead of a collection, you choose a <code>Service<\/code> or a <code>Product<\/code>, the <code>WebPage<\/code> changes its <code>mainEntity<\/code>. The graph remains unified, but the content type changes. If you choose Product with a price, the Rich Results Test lights up with the Product Snippet.<\/p>\n<div class=\"terminal-box\" style=\"background: #1e1e1e; overflow-x: auto; padding: 20px;\">\n<pre style=\"margin: 0; color: #d4d4d4; font-family: var(--font-mono); font-size: 0.85rem;\"><code><span style=\"color: #00C853;\">\/\/ Example with Service: the WebPage has a mainEntity<\/span>\r\n{\r\n  <span style=\"color: #06B6D4;\">\"@type\"<\/span>: \"WebPage\",\r\n  <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"...\/#webpage\",\r\n  <span style=\"color: #06B6D4;\">\"isPartOf\"<\/span>: { <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"https:\/\/www.imwaa.com\/blog\/#website\" },\r\n  <span style=\"color: #06B6D4;\">\"about\"<\/span>: { <span style=\"color: #06B6D4;\">\"@type\"<\/span>: \"Thing\", <span style=\"color: #06B6D4;\">\"name\"<\/span>: \"Wordpress ottimizzato\" },\r\n  <span style=\"color: #06B6D4;\">\"mainEntity\"<\/span>: { <span style=\"color: #06B6D4;\">\"@id\"<\/span>: \"...\/#service\" }\r\n}<\/code><\/pre>\n<\/p><\/div>\n<p style=\"margin-top: 15px; font-size: 0.9rem; color: var(--text-sub);\"><em>Note:<\/em> If you choose Product, the Rich Results Test will report &#8220;2 non-critical issues&#8221; (yellow warnings) for the missing rating. They are not blocking errors, but if you have genuine reviews, add them in the plugin to show the stars in SERP.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"section section-alt\" aria-labelledby=\"title-teoria\">\n<div class=\"container\">\n<div class=\"centered-header\">\n<h2 id=\"title-teoria\">Why the Unified Graph beats traditional plugins<\/h2>\n<\/p><\/div>\n<div class=\"grid-2\">\n<div class=\"card\">\n<h3>Semantics and Ontology<\/h3>\n<p>Regular plugins inject a code fragment that is not linked back to the site&#8217;s main entity. Our plugin, through the <code>@id<\/code> properties and the <code>isPartOf<\/code> property, tells Google: <em>&#8220;This page is part of this site, it is about this topic (about), and it has these significant links (significantLink)&#8221;<\/em>. This is what allows AI systems to understand the relationships between your pages.<\/p>\n<\/p><\/div>\n<div class=\"card\">\n<h3>Preventing Cannibalization<\/h3>\n<p>Declaring that a page is a <code>CollectionPage<\/code> helps the crawler understand that this URL is a container (a Pillar), not a single piece of content. This prevents the collection page from competing for the same keyword as a specific article. It is siloing taken to the code level.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"text-center\" style=\"margin-top: 40px;\">\n<p>To understand how these rules are applied, read the <a href=\"https:\/\/www.imwaa.com\/en\/audit\/schema\/\" title=\"Guide to Schema.org Audit and the 19 rules of Entity SEO\">Schema.org Audit guide<\/a>. To test your graphs, use the <a href=\"https:\/\/validator.schema.org\/\" target=\"_blank\" rel=\"noopener\" title=\"Official Schema.org validator (new tab)\">Schema.org validator<\/a> and the <a href=\"https:\/\/search.google.com\/test\/rich-results\" target=\"_blank\" rel=\"noopener\" title=\"Google Rich Results Test (new tab)\">Rich Results Test<\/a>.<\/p>\n<p style=\"margin-top: 20px;\"><a href=\"https:\/\/www.imwaa.com\/en\/audit\/\" class=\"btn btn-primary\" title=\"Run the full audit: Schema.org, rich snippets, and performance\">Run the full audit on your site<\/a><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"section\" aria-labelledby=\"title-rimando-articolo\">\n<div class=\"container\">\n<div class=\"centered-header\">\n<h2 id=\"title-rimando-articolo\">Looking for the guide for Posts?<\/h2>\n<p>This page explains how to configure the <strong>container<\/strong>. If you need to understand what happens inside a <strong>post<\/strong> \u2014 the <code>#article<\/code> entity, author, date, review block \u2014 the right guide is the other one.<\/p>\n<p>      <a href=\"https:\/\/www.imwaa.com\/blog\/json-ld-seo-on-wordpress\/\" class=\"btn btn-primary\" title=\"Read the JSON-LD SEO guide for a WordPress post\">Go to the WordPress Post guide<\/a>\n    <\/div>\n<\/p><\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>SEO Semantic Plugin \u00b7 User Manual How to add JSON-LD SEO to a WordPress page This is a WordPress page. Unlike a WordPress post, where you configure the &#8220;content&#8221;, here you build the structure of the container. You tell the page whether it is a Collection, a Product, a Service, or an institutional page. The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-153","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/pages\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":5,"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/pages\/153\/revisions"}],"predecessor-version":[{"id":183,"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/pages\/153\/revisions\/183"}],"wp:attachment":[{"href":"https:\/\/www.imwaa.com\/blog\/wp-json\/wp\/v2\/media?parent=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}