问题出现得很突然,日志倒是留得挺全。JSON-LD 里 Article 的 @id 写成 /post/1#article,Organization 的 @id 写成 /#org,富媒体测试提示实体无法关联,Article 标记一直不生效。
刚开始盯着「模板用了相对 permalink 输出」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。@id 应是可解析的绝对地址,相对路径无法跨实体引用。另一种情况是同一页面里两个实体的 @id 前缀不一致。
不容易想到的是,没有在 @context 之后统一声明站点域名。
动手时先看输出的 @id 值
curl -s https://www.example.com/post-1/ | Select-String "@id"
接着改成绝对地址
$id = home_url('/post/1#article');
然后确认作者与发布者引用能对上
curl -s https://www.example.com/post-1/ | Select-String publisher
等前面都确认过,再用富媒体测试复核
curl -s "https://search.google.com/test/rich-results?url=https://www.example.com/post-1/" -o /dev/null -w "%{http_code}"
这台环境是别人交接的,不少默认值被动过,只能一项项核。
别只看报错消失,验证要多做一步。页面里所有 @id 都是 https 开头的绝对地址,富媒体测试不再报实体引用失败。
@id 是实体的身份证,写成相对路径等于每个页面各说各话。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
