首页 文章

在Genesis面包屑中执行WordPress短代码

提问于
浏览
0

我创建了一个短代码 [year] 来动态显示当前年份 . 我使用此过滤器在帖子 Headers 中启用了它:

add_filter( 'the_title', 'do_shortcode' );

短代码在帖子 Headers 中成功执行,但显示在面包屑中 . 我正在使用Genesis Framework,所以有没有办法让它在Genesis面包屑中运行?

1 回答

  • 0

    像你一样使用the_title过滤器,实际上应该工作正常(我刚测试并确认它在我的本地站点上工作) .

    事实上,它有时可能是一个有问题的过滤器,因为人们希望它只过滤页面 Headers ,但实际上只要从数据库中提取它就会过滤 the_title ,包括页面 Headers ,面包屑,菜单项名称等 .

    也就是说,如果由于某些原因它不起作用,Genesis有一个方便的 Genesis_Breadcrumb 类 . 最值得注意的是它有genesis_breadcrumb_args过滤器,允许你删除"You are here:"等 . 如果你正在使用的主题是实现Genesis面包屑而不是一些自定义的主题,你实际上可以访问较少使用的 genesis_build_crumbs 过滤器 .

    build_crumbs() 方法返回一个页面/帖子名称数组,您可以使用简单的 foreach 循环或array_map进行修改 .

    采取以下功能:

    function so52299149_breadcrumbs( $crumbs ) {
        $new_crumbs = array_map( function($val){
            return do_shortcode( $val );
        }, $crumbs);
    
        return $new_crumbs;
    }
    add_filter( 'genesis_build_crumbs', 'so52299149_breadcrumbs' );
    

    它将通过do_shortcode()函数运行 $crumbs 数组中的每个元素,为您提供所需的输出 . 再一次,你拥有它的方式, add_filter( 'the_title', 'do_shortcode' ); should be working - 所以检查你的儿童主题如何工作 - 如果那个's the case there'可能还有其他的东西在起作用 .

相关问题