【问题标题】:Execute a WordPress shortcode in Genesis breadcrumbs在 Genesis 面包屑中执行 WordPress 简码
【发布时间】:2018-09-12 15:51:11
【问题描述】:

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

add_filter( 'the_title', 'do_shortcode' );

短代码在帖子标题中成功执行,但在面包屑中显示。我正在使用 Genesis 框架,所以有什么方法可以让它在 Genesis 面包屑中也能工作吗?

【问题讨论】:

    标签: php wordpress shortcode breadcrumbs genesis


    【解决方案1】:

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

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

    也就是说,如果它出于某种原因工作,Genesis 有一个方便的Genesis_Breadcrumb 类。最值得注意的是它有 genesis_breadcrumb_args 过滤器,可以让你删除“你在这里:”等。如果你使用的主题是实现 Genesis Breadcrumbs 而不是一些自定义的,你实际上有访问使用较少的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' ); 应该可以工作 - 所以检查你正在使用的子主题是如何实现面包屑的,特别是如果上面的功能不起作用 - 如果是这样的话可能还有其他原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多