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

如何让WordPress文章标题中的shortcode在归档页列表中正常渲染

解决方法

  1. 先修正现有代码的语法错误:你当前使用的代码中,add_filter 行使用了中文全角引号,会直接导致过滤器规则不生效,需先替换为英文半角引号。
  2. 调整过滤器逻辑适配归档页场景:多数WordPress主题在归档页、文章列表页输出标题时,要么短代码解析优先级不够被其他主题自带的标题处理逻辑覆盖,要么会调用额外的标题输出函数导致现有 the_title 过滤器没有生效,你可以直接替换为以下完整代码:
// Shortcode 实现输出当前年份
function year_shortcode () {
    $year = date_i18n ('Y');
    return $year;
}
add_shortcode ('year', 'year_shortcode');

// 为标题添加shortcode解析,调高优先级避免被其他过滤器覆盖,同时排除菜单场景
add_filter( 'the_title', function( $title, $id = null ) {
    // 仅对文章/页面标题生效,不对菜单标题解析
    if ( !is_null($id) && get_post_type($id) !== 'nav_menu_item' ) {
        $title = do_shortcode( $title );
    }
    return $title;
}, 20 ); 

add_filter( 'wpseo_title', 'do_shortcode' );
add_filter( 'wpseo_metadesc', 'do_shortcode' );

// 适配部分主题列表页调用the_title_attribute输出标题的场景
add_filter( 'the_title_attribute', function( $attribute ) {
    return do_shortcode( $attribute );
}, 20 );

以上代码调高了过滤器优先级为20(默认优先级为10),可以确保短代码解析在其他默认标题处理逻辑执行后触发,不会被覆盖;同时增加了菜单标题的排除逻辑,避免导航菜单内的同类字符被误解析。
如果替换后依旧不生效,可以检查所用主题的归档页模板代码,找到标题输出对应的自定义函数,参照上面的写法为对应的过滤器添加短代码解析即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:36:05