首页每张卡片的摘要末尾都有一个黑色问号方块,像「本周更新的内容是�」。后台手写的摘要本身是完整的。日志里能对上时间点,这种反而好排。

主题用 substr 按字节截断,UTF-8 下一个汉字占三字节,正好切在中间就留下半个字符。浏览器拿到非法字节序列只能显示替换符。这一点先确认清楚,后面就不用反复试。

$excerpt = mb_substr(get_the_excerpt(), 0, 120, 'UTF-8');
$excerpt = wp_trim_words(get_the_excerpt(), 55, '…');

「摘要截断乱码」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:把 substr 换成 mb_substr,显式传 UTF-8,按字符数截;能用 wp_trim_words 的就用它,它会自己处理多字节和省略号;改完清一次页面缓存,首页卡片才会重新生成。

结果对不对很好判断,首页摘要末尾是完整的汉字加省略号,不再出现问号方块。

作者 9823189