
本文介绍如何扩展 wordpress 自定义短代码,使其不仅能输出当前页面标题,还能自动移除预设的冗余词汇(如 “best”、“top”、“bay” 等),实现语义更简洁、seo 更友好的标题展示。
本文介绍如何扩展 wordpress 自定义短代码,使其不仅能输出当前页面标题,还能自动移除预设的冗余词汇(如 “best”、“top”、“bay” 等),实现语义更简洁、seo 更友好的标题展示。
在 WordPress 开发中,短代码(Shortcode)是快速复用逻辑的常用方式。你已有一个基础短代码 [page_title] 用于显示当前页面标题,但实际运营中,标题常包含营销性前缀(如 Best, Top, Ultimate, 2024 等),这些词虽利于吸引点击,却可能干扰内容一致性或结构化数据呈现。因此,我们需要增强该短代码,支持按需过滤关键词。
以下是一个健壮、可维护的升级方案:
✅ 改进后的短代码函数(推荐写法)
function post_title_shortcode($atts) {
// 解析短代码属性,支持动态传入要排除的词(可选)
$atts = shortcode_atts([
'exclude' => 'Best,Top,Ultimate,2024,Bay', // 默认排除列表,逗号分隔
'case_sensitive' => false,
], $atts);
$title = get_the_title();
$excludes = array_filter(array_map('trim', explode(',', $atts['exclude'])));
if (empty($excludes)) {
return $title;
}
if ($atts['case_sensitive']) {
$filtered_title = str_replace($excludes, '', $title);
} else {
$filtered_title = str_ireplace($excludes, '', $title);
}
// 清理多余空格与分隔符(如连续空格、首尾空格、重复分隔符)
$filtered_title = preg_replace('/\s+/', ' ', trim($filtered_title));
return $filtered_title;
}
add_shortcode('page_title', 'post_title_shortcode');
✅ 使用示例
基础用法(使用默认排除词):
[page_title] → 若标题为 Best City in California,输出 City in California自定义排除词:
[page_title exclude="Best,Top,2024"] → 灵活覆盖默认列表区分大小写匹配(谨慎使用):
[page_title exclude="iOS" case_sensitive="true"]
⚠️ 注意事项
- str_ireplace() 是大小写不敏感替换,更适合标题场景;若需精确匹配(如仅替换独立单词 "Top" 而非 "Top10" 中的 "Top"),建议改用正则 preg_replace() 配合单词边界 \b;
- 替换后务必调用 trim() 和 preg_replace('/\s+/', ' ', ...),避免因删除中间词导致多空格或首尾空白;
- 不建议在 $excludes 中使用正则特殊字符(如 .、*、+),除非你主动转义并改用 preg_replace;
- 如需全局统一管理排除词(而非每次短代码传参),可将 $excludes 数组移至 wp-config.php 或主题 functions.php 顶部常量中,提升可维护性。
通过此方案,你的 [page_title] 短代码不再只是静态回显,而成为一个轻量、灵活、生产就绪的内容净化工具——兼顾功能性、可读性与扩展性。











