这类问题我又碰上了一次。面包屑结构化数据的 position 依次是 1、2、4,中间少了一个 3,测试工具提示层级不连续,富媒体展示直接消失。
第一反应是「position 被写死成字符串,比较时按字典序处理」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。层级是循环里取数组下标,删除一级后序号没有重排;产品线把某个中间分类隐藏了,模板仍然按旧顺序输出;同一页面同时输出了两套面包屑,两套序号互相冲突。
上来先把页面上的层级与 position 对照列出
curl -s https://www.example.com/p/1 | grep -o '"position"[^,]*'
然后在模板里改用循环序号而不是写死值
$i = 1; foreach ($crumbs as $c) { $item['position'] = $i++; }
等前面都确认过,再清理主题里多余的那套面包屑输出
grep -rn 'BreadcrumbList' wp-content/themes/ | head
怎么算真的好了,看的是同一批现象。序号改成循环生成后,面包屑恢复为连续的三级,富媒体在三天内重新出现。
这里还有个坑。面包屑改动常伴随栏目调整,每次改分类结构后都值得回看一下序号是否还连续。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
