现场是这样的。商品页的 offers 里 price 写成 ¥299 元 还带了千分位 1,299 结构化数据校验报价格格式错误 富媒体不展示 前端显示正常 因为展示层做了格式化 标记层直接取了展示文案

中间走过弯路,把「千分位逗号不符合数值格式」当成主因,改完现象没变。

原因不止一个,得分开看。标记层复用了页面展示的价格字符串;货币符号与 priceCurrency 重复;促销价与划线价放进了同一个字段。

先抽一段 offers 看 price 原值

curl -s https://www.example.com/g/1 | grep -o '"price":"[^"]*"'

随后输出纯数字并单独给币种

echo json_encode(['price' => 299.00, 'priceCurrency' => 'CNY']);

去掉千分位和货币符号

php -r 'echo number_format(1299, 2, ".", "");'

复验富媒体测试结果

https://search.google.com/test/rich-results

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

恢复的判定其实很直接。price 为纯数字 币种单独声明 校验通过 富媒体恢复展示。

容易忽略的是,结构化数据要机器可读 展示用的符号和分隔符一个都不能带进去。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189