如何在Next-SEO的LocalBusiness schema中添加parentOrganization?
在Next-SEO中为LocalBusiness Schema添加parentOrganization字段
问题背景
我需要将现有的LocalBusiness Schema迁移到使用Next-SEO的新站点,但Next-SEO存在严格限制,自定义属性会被自动移除。希望在LocalBusiness Schema中加入parentOrganization字段,且不想单独添加独立的Organization Schema,避免搜索引擎产生混淆。
旧Schema如下:
{ "@context": "http://schema.org", "@type": "LocalBusiness", "name": "some name", "description": "some description", "openingHours": "24 hours", "currenciesAccepted": "USD", "paymentAccepted": "Credit Card", "image": "some logo", "telephone": "some phone", "openingHoursSpecification":[{ "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "opens": "00:00", "closes": "23:59" }], "parentOrganization": { "@type": "Organization", "name": "org name", "award": "A+ Rating from the Better Business Bureau", "logo": "org logo", "url": "org url", "member": { "@type": "Organization", "name": "Better Business Bureau" } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "515" }, "address": "some address", "priceRange": "$99" }
解决方案
1. 手动注入完整Schema(推荐)
跳过Next-SEO的内置Schema生成逻辑,直接在页面的Head组件中插入包含parentOrganization的完整结构化数据脚本,完全避免Next-SEO的字段过滤限制。
代码示例:
import Head from 'next/head'; export default function YourPage() { // 定义包含parentOrganization的完整LocalBusiness Schema const localBusinessSchema = { "@context": "http://schema.org", "@type": "LocalBusiness", "name": "some name", "description": "some description", "openingHours": "24 hours", "currenciesAccepted": "USD", "paymentAccepted": "Credit Card", "image": "some logo", "telephone": "some phone", "openingHoursSpecification":[{ "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], "opens": "00:00", "closes": "23:59" }], "parentOrganization": { "@type": "Organization", "name": "org name", "award": "A+ Rating from the Better Business Bureau", "logo": "org logo", "url": "org url", "member": { "@type": "Organization", "name": "Better Business Bureau" } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "515" }, "address": "some address", "priceRange": "$99" }; return ( <> <Head> {/* 插入结构化数据脚本 */} <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(localBusinessSchema) }} /> </Head> {/* 页面主体内容 */} </> ); }
2. 扩展Next-SEO类型定义(TypeScript项目可选)
如果使用TypeScript,可以扩展Next-SEO的LocalBusiness类型定义,让parentOrganization字段通过类型检查。但注意:部分Next-SEO版本仍会过滤非预设字段,因此仅当测试确认字段未被移除时使用。
类型扩展示例:
import { LocalBusiness } from 'next-seo'; declare module 'next-seo' { interface LocalBusiness { parentOrganization?: { "@type": string; name: string; award?: string; logo?: string; url?: string; member?: { "@type": string; name: string; }; }; } }
之后在Next-SEO配置中传入parentOrganization字段即可,但需验证最终渲染的HTML是否保留该字段。
内容的提问来源于stack exchange,提问作者james emanon
相关产品推荐
相关产品推荐

