php - 在 Genesis 面包屑中执行 WordPress 简码
问题描述
我创建了一个短代码[year]来动态显示当前年份。我使用此过滤器在帖子标题中启用了它:
add_filter( 'the_title', 'do_shortcode' );
短代码在帖子标题中成功执行,但在面包屑中显示。我正在使用创世纪框架,所以有什么方法可以让它在创世纪面包屑中工作吗?
解决方案
像您所做的那样使用the_title
过滤器,实际上应该可以正常工作(我刚刚测试并确认它在我的本地站点上工作)。
事实上,它有时可能是一个有问题的过滤器,因为人们希望它只过滤页面标题,但实际上它the_title
会在从数据库中提取时过滤,包括页面标题、面包屑、菜单项名称等。
也就是说,如果由于某种原因它不能Genesis_Breadcrumb
正常工作,Genesis 有一个方便的类。最值得注意的是,它具有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' );
它将$crumbs
通过do_shortcode()
函数运行数组中的每个元素,为您提供所需的输出。同样,您拥有它的方式add_filter( 'the_title', 'do_shortcode' );
应该可以正常工作-因此请检查您正在使用的子主题是如何实现面包屑的,尤其是在上述功能不起作用的情况下-如果是这种情况,则可能还有其他原因。
推荐阅读
- r - 遍历列以对每行的前 2 个数字求和
- swift - 如何在文本视图中停止计时器?
- android - 如何在共享首选项上保存 RecyclerView 的 spanCount?
- javascript - 在javascript中追加将div转换为文本
- android - Glide在RecyclerView的条件句中乱码
- flutter - 颤振:[错误:颤振/lib/ui/ui_dart_state.cc(166)]未处理的异常
- c++ - PostgreSQL 无法访问
- php - 无法在 php 中创建具有相同项目名称的多个项目的数组
- xaml - 如何检测输入来自 UWP 中 TextBox 中的 IME?
- javascript - 为什么即使函数是异步的,这个函数调用也会抛出“await 仅在异步函数中有效”语法错误?