商品名 Rock & Roll 联名款 在目录里显示成 Rock & Roll,详情页正常,导出的 CSV 里也是转义后的那串字符。乍看像缓存或者权限的锅,追下去往往不是。

echo esc_html(get_the_title());
// 不要再套 esc_html(apply_filters('the_title', ...))

追下去是这么回事:模板先用 esc_html 处理了一次,the_title 过滤器里主题又套了一层,& 被编码两次。导出直接读了处理后的字段。

「目录标题重复转义」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

具体做法是,输出时只保留一层转义,别在过滤器里再转;导出读原始 post_title,展示层再转义;用带 & 和引号的商品名各测一次。

验收就看一点,目录里显示 Rock & Roll,源码里是 &,导出 CSV 是原始字符。

作者 9823189