我创建了一个简短代码 [year] 以动态显示当前年份。我通过使用此过滤器在帖子标题中启用了它:
add_filter( 'the_title', 'do_shortcode' );
Shortcode在帖子标题中成功执行,但显示在面包屑中。我正在使用Genesis Framework,是否有任何方法也可以使其在Genesis面包屑中起作用?
答案 0 :(得分:0)
像您一样使用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' );
应该可以工作-因此,请检查您使用的Child Theme如何实现面包屑,特别是如果上面的功能不起作用-这种情况下可能还会有其他事情发生。