You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress推送Telegram时文章标题破折号显示为–如何修复

WordPress推送标题到Telegram破折号显示异常修复方案

问题原因

WordPress默认会通过wptexturize过滤器将标题中的半角破折号转换为HTML实体编码的短破折号–,向Telegram推送时如果没有提前解码实体,或者API解析模式配置不当,就会直接显示原始实体编码。

修复方法

方法1:直接解码HTML实体(最通用)

使用PHP内置的html_entity_decode()函数包裹标题获取逻辑,直接将所有HTML实体转回对应原始字符:

$post_title = html_entity_decode(get_the_title(), ENT_QUOTES, 'UTF-8');

该方案无需改动WordPress核心逻辑,仅针对推送场景处理即可。

方法2:适配Telegram API解析规则

如果使用Telegram Bot API的MarkdownV2/HTML模式推送,解码后还需要对对应模式的保留字符做转义,避免推送报错:

// 先解码实体
$post_title = html_entity_decode(get_the_title(), ENT_QUOTES, 'UTF-8');
// 针对MarkdownV2模式转义保留字符示例
$post_title = str_replace(
    ['_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'],
    ['\_', '\*', '\[', '\]', '\(', '\)', '\~', '\`', '\>', '\#', '\+', '\-', '\=', '\|', '\{', '\}', '\.', '\!'],
    $post_title
);

方法3:临时移除WordPress文本格式化过滤器

如果不想做解码操作,可以在获取标题前临时移除负责实体转换的wptexturize过滤器,获取完成后恢复避免影响站点其他功能:

// 临时移除标题文本格式化过滤器
remove_filter('the_title', 'wptexturize');
$post_title = get_the_title();
// 恢复过滤器
add_filter('the_title', 'wptexturize');

内容的提问来源于stack exchange,提问作者Nazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:24:05