先看现象。编辑从 Word 粘贴标题,中间带了 U+3000 全角空格,页面上看不出来。搜索结果里标题被从空格处截断,后半段消失。试过在插件里改长度限制,没有改善。
这类报错背后常见的原因有几处,逐个排除就行。全角空格在字节计算里占三位,标题长度提前触顶。还有一种是模板没有做空白字符归一化,原样输出到 head。
不容易想到的是,slug 生成时把全角空格转成奇怪的编码,URL 变长。
还有一种情况,不同搜索引擎对全角空格的断行处理不一致。
上来先在数据库里定位全角空格
wp db query "SELECT ID,post_title FROM wp_posts WHERE post_title LIKE CONCAT('%',CHAR(12288 USING utf8mb4),'%');"
批量替换成半角空格
wp db query "UPDATE wp_posts SET post_title=REPLACE(post_title,CHAR(12288 USING utf8mb4),' ') WHERE post_status='publish';"
复核前台标题字节数
curl -s https://www.example.com/post/1/ | grep -o '<title>[^<]*</title>' | wc -c
末了确认 slug 没有异常编码
curl -sI https://www.example.com/post/1/ | grep -i location
改完先别撤,确认这几项。全角空格清理后,标题在结果里完整显示,字节数回到安全范围,受影响的 URL 没有发生变化。
从 Word 或公众号粘贴是这类问题的常见来源,入库前统一做一次空白归一化能省很多事。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
