摘要字段是从正文自动截取的,截出来带着 p 和 strong 标签,搜索结果里直接显示成尖括号加文字,看起来像页面坏了。
一开始怀疑是「编辑器粘贴的富文本带内联样式,一并被截进摘要」,查了一圈,方向不对。
这类报错背后常见的原因有几处,逐个排除就行。截取函数没有过滤 HTML,标签原样写进 meta。也可能是截断位置落在标签中间,产生半截标签。
少数情况下是摘要字段和 og:description 共用一份未清洗的值。
先检查页面摘要的实际内容
curl -s https://www.example.com/post-1/ | grep -o 'name="description"[^>]*'
再往下统计带标签的摘要条数
SELECT COUNT(*) FROM wp_postmeta WHERE meta_key LIKE '%metadesc' AND meta_value LIKE '%<%';
截取时先剥标签再限长
add_filter('wpseo_metadesc', 'strip_tags');
批量清洗历史摘要
UPDATE wp_postmeta SET meta_value=REGEXP_REPLACE(meta_value,'<[^>]+>','') WHERE meta_key LIKE '%metadesc';
中途换过一次思路,把范围缩到最小的那一层,反而快了。
改完先别撤,确认这几项。搜索结果里的尖括号消失,摘要变成通顺的一句话,og:description 同步恢复正常。
容易忽略的是,自动摘要一定要先转义再截断,标签截半段比不写摘要更伤展现。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
