
本文介绍如何扩展wordpress短代码功能,在输出页面标题的同时自动移除预设的冗余词汇(如“best”“top”“bay”等),提升内容呈现的专业性与简洁性。
本文介绍如何扩展wordpress短代码功能,在输出页面标题的同时自动移除预设的冗余词汇(如“best”“top”“bay”等),提升内容呈现的专业性与简洁性。
在默认实现中,[page_title] 短代码仅调用 get_the_title() 返回原始标题,但实际运营中常需语义净化——例如去除营销化前缀(“Best”, “Top”, “Ultimate”)或地域冗余词(“Bay”, “Area”, “Region”),使嵌入标题更契合上下文场景。
以下为增强版短代码函数,支持大小写不敏感匹配与多词批量过滤:
function post_title_shortcode() {
// 定义需过滤的关键词(支持英文单词及常见短语)
$excluded_words = [
'Best',
'Top',
'Ultimate',
'Bay',
'Area',
'Region',
'Guide',
'2024'
];
$title = get_the_title();
// 逐个替换,确保空格与边界处理更自然(避免误删子串)
foreach ($excluded_words as $word) {
// 使用正则替换:匹配独立单词(前后为空格、标点或字符串边界)
$pattern = '/\b' . preg_quote($word, '/') . '\b/i';
$title = preg_replace($pattern, '', $title);
}
// 清理多余空格与首尾空白
$title = trim(preg_replace('/\s+/', ' ', $title));
return $title;
}
add_shortcode('page_title', 'post_title_shortcode');✅ 使用示例:
- 原始标题:Best Top Ultimate City in San Francisco Bay Area
- 输出结果:City in San Francisco
⚠️ 注意事项:
- preg_replace + \b 边界符可防止误删(如不将 "Bay" 从 "Bayonet" 中错误截断);
- /i 标志确保大小写不敏感,适配标题常见格式;
- 连续空格会被压缩为单空格,避免排版错位;
- 如需保留某些上下文(如“Top 10”应整体移除而非只删“Top”),建议扩展正则逻辑或改用 str_ireplace() 配合完整短语列表;
- 该函数在模板循环中安全调用,无需额外 global $post 或 setup_postdata()。
通过此方案,您可在不修改主题模板的前提下,灵活控制标题展示逻辑,兼顾SEO友好性与前端一致性。


















