先看现象。编辑从 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 或公众号粘贴是这类问题的常见来源,入库前统一做一次空白归一化能省很多事。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189