这个坑值得记一笔。面包屑模板输出「首页 > 栏目 > 文章」,但「首页」两个字是纯文本,没有链接,两千篇文章因此少了一条回首页的路径。
刚开始盯着「面包屑最后一项也带链接,形成自指内链」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。模板把第一项当分隔符处理,只输出文字;首页链接只放在 logo 上,锚文本不是「首页」;结构化数据里的 position 从 1 开始,与实际少一项不符。
上来先检查首项是否为链接
curl -s https://www.example.com/post/ | grep -o '<div class="breadcrumb".*</div>' | head -1
补上首页链接
add_filter('breadcrumb_home', function(){ return '<a href="/">首页</a>'; });
末项去掉链接
add_filter('breadcrumb_last', function($t){ return strip_tags($t); });
校验结构化数据层级
curl -s https://www.example.com/post/ | grep -o '"position":[0-9]*'
怎么算真的好了,看的是同一批现象。面包屑四项里三项是链接、末项是纯文本,position 从 1 连续到 4,结构化数据测试无报错。
容易忽略的是,面包屑每一级都是一条内链,全站乘起来几千条,这一处写错的影响面比正文内链大。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
