这类问题我又碰上了一次。产品页的描述里有「A&B」这样的型号,输出到 meta description 时被转义成 &,搜索结果里显示成「A&B」。

把日志和配置对完,能解释这个现象的基本就这几处。描述字段在入库时已经做过一次 HTML 转义;模板输出时又调用了一次转义函数;编辑在后台直接粘贴了带实体的文本。

第一件事是检查页面里 description 的实际内容

curl -s https://www.example.com/p/1024 | grep -o 'name="description"[^>]*'

接着输出前做一次反转义

html_entity_decode($desc, ENT_QUOTES, 'UTF-8');

修正入库时的重复转义

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '&', '&') WHERE meta_key = '_yoast_wpseo_metadesc';

复检三篇带特殊字符的页面

curl -s https://www.example.com/p/1024 | grep -c '&'

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

怎么算真的好了,看的是同一批现象。修正后摘要里正常显示 A&B,搜索结果不再出现转义字符,相关页面的点击率回到正常水平。

这里还有个坑。转义函数用两次是这类问题的常见来源,写入和输出只留一处处理就够。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189