我有一个wordpress网站, 其中有一个自定义主题, 可以在其中为每个网页创建模板部分。我想在加载特定页面模板(例如:abc.php)时将特定类(例如:abc)包括/注入到header.php的body标签中。
首先, 我在header.php中使用了下面的代码, 它没有用。
<
body <
?php if ( is_page_template( 'template-parts/page/abc.php' ) ) { body_class( 'abc' );
} else { body_class();
} ?>
>
然后, 我将下面的代码添加到functions.php中, 但是它也不起作用。
add_filter( 'body_class', 'abc_class' );
function abc_class( $classes ) {if ( is_page_template( 'template-parts/page/abc.php' ) ) {
$classes[] = 'abc';
}return $classes;
}
我不明白我在做什么错。我怎样才能解决这个问题?
#1【加载特定的WordPress页面模板时,无法向body标签注入特定的类名】首先, is_page_template()函数适用于WP模板, 我的意思是其中的文件开头
/*
* Template name: Your Super Template
*/
因此, 该函数返回true的是实际显示此模板的页面。我会告诉你更多, 你甚至不必添加自定义主体类, 因为函数body_class()为每个页面模板添加了特定的唯一类:)
其次, 页面模板可以位于主题目录本身或1级子目录中, 因此
<
body <
?php if ( is_page_template( 'abc.php' ) ) { body_class( 'abc' );
} else { body_class();
} ?>
>
or
<
body <
?php if ( is_page_template( 'page-templates/abc.php' ) ) { body_class( 'abc' );
} else { body_class();
} ?>
>
你的模板位于2级子目录中, 因此实际上不是页面模板, 而是模板的一部分。
因此, 用两个词来说, 函数is_page_template()用于页面模板, 但不适用于模板部分
#2我能够在functions.php中添加以下内容, 以便在每次加载特定页面时将其添加到主体类中。
add_filter( 'body_class', function( $classes ) {
if ( is_page() ){
$slug = get_queried_object()->
post_name;
return array_merge( $classes, array( $slug ) );
}
return $classes;
} );
推荐阅读
- 未捕获的错误(不能将WP_Post类型的对象用作数组)
- 无法在WordPress网站的PHP中设置列表项类
- 无法在WordPress模板中获取get_the_tags()
- WP无法添加默认标题图像
- 尝试编辑Hemingway wordpress主题以添加”评论回复”链接
- 在自定义主题中实现jquery-ias时遇到问题
- 大数据开发Linux系统入门之netstat 命令学习
- 做软件测试需要一直培养成长的技能
- 小知识系列:查询数据库数据的元信息