商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何在WordPress短代码中动态显示页面标题并过滤特定关键词

如何在WordPress短代码中动态显示页面标题并过滤特定关键词

  发布于2026-07-06 阅读(0)

扫一扫,手机访问

在日常的WordPress开发中,短代码是个非常灵活的利器。但很多时候,直接输出页面标题会发现夹杂着一些“冗余词”——比如营销化的“Best”、“Top”,或者地域后缀“Bay”、“Area”。如果不加处理,这些词会让标题显得不够清爽,也不利于内容的专业呈现。这篇文章就来看看如何扩展短代码功能,在输出页面标题的同时自动过滤掉这类预设词汇,让标题更简洁、更贴合场景。

默认情况下,[page_title] 短代码只是简单调用 get_the_title() 返回原始标题。但在真实运营中,我们往往需要做一层“语义净化”——比如去掉营销前缀(“Best”, “Top”, “Ultimate”),或者清理地域冗余词(“Bay”, “Area”, “Region”),使得嵌入到各个位置的标题看起来更自然、更统一。

下面这个增强版短代码函数就能搞定这件事。它支持大小写不敏感匹配,可以一次性过滤多个预设词汇,而且通过正则边界符避免了误伤(比如不会把“Bayonet”中的“Bay”截断)。

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

几个需要注意的细节:

  • 正则中的 \b 单词边界很关键——它能防止误删,比如不会把“Bay”从“Bayonet”里错误地截掉;
  • /i 标志让匹配不区分大小写,适配标题中五花八门的写法;
  • 连续空格会被压缩成单个空格,避免输出后排版出现奇怪的空隙;
  • 如果需要保留某些上下文(比如“Top 10”应该整体移除,而不只是删掉“Top”),建议扩展正则逻辑,或者改用 str_ireplace() 配合完整短语列表来处理;
  • 这个函数在模板循环中可以直接调用,不需要额外 global $postsetup_postdata(),非常省心。

通过这种方式,你可以在不修改主题模板的前提下,灵活控制标题的展示逻辑。既兼顾了SEO的友好性,也保证了前端呈现的一致性——这才是实际运营中最需要的“小而美”的优化点。

本文转载于:https://www.php.cn/faq/2450277.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注