报错是这么冒出来的。主题在 head 里输出了一份 FAQPage 的 JSON-LD,插件又在正文底部输出一份,字段还不完全一样。搜索结果里 FAQ 折叠区域消失,测试工具提示「检测到多个重复实体」。
中间走过弯路,把「插件只在详情页加载,主题输出则全站生效」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。主题与 SEO 插件都注册了同一套结构化数据。也可能是两份数据的 @id 不一致,被当成两个独立实体。
还有一种情况,插件更新后重新注册了 FAQPage 旧的过滤器没有卸载。
数一下页面里有几段 JSON-LD
curl -s https://www.example.com/faq/1 | grep -c 'application/ld+json'
再往下关掉其中一份并统一 @id
add_filter('wpseo_json_ld_output', '__return_false');
校验合并后的结构
curl -s https://www.example.com/faq/1 | python -c "import sys,json,re;print(len(re.findall(r'FAQPage',sys.stdin.read())))"
两周后看富媒体展示情况
curl -s https://www.example.com/faq/1 | grep -o '"@type":"[A-Za-z]*"' | head
怎么算真的好了,看的是同一批现象。只保留一份并统一 @id 后,测试工具不再报重复实体,十天后搜索结果里的问答折叠区域恢复展示。
补一句。JSON-LD 重复的问题在装了多个 SEO 插件时特别常见,上线前数一下标签数量就能避免。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
