先看现象。查看网页源码能看到完整的 JSON-LD,粘贴进测试工具却提示无法提取结构化数据,试了几个页面都一样。

真正麻烦的地方在于,几个原因的现象几乎一样。JSON-LD 被注释包裹,解析时被忽略。还有一种是script 标签的 type 写错,浏览器不当作数据块。

少数情况下是内容里有未转义的换行或控制字符。

第一件事是确认 script 标签的 type 写法

curl -s https://www.example.com/a/ | grep -i 'application/ld+json'

然后检查 JSON 是否能被正常解析

curl -s https://www.example.com/a/ | python -c 'import sys,json;json.load(sys.stdin)'

去掉注释和多余换行后重新输出

add_action('wp_head', 'print_schema', 5);

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

恢复的判定其实很直接。测试工具能提取到全部实体,字段列表与代码里的一致。

补一句。JSON 里不允许写注释,双斜杠注释在浏览器里看着没问题,解析器会直接失败,这是最常见的原因,优先怀疑它,再再查全角字符。另一种情况是标记写在 iframe 里,工具只读主文档。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189