加载特定 WordPress 页面模板时无法将特定类名注入正文标签
Unable to inject a specific classname to body tag when a specific WordPress page template loads
我有一个 wordpress 网站,其中有一个自定义主题,我可以在其中为每个网页创建模板部分。当特定页面模板(例如:abc.php) 负载。
首先我在 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;
}
我不明白我在这里做错了什么。我该如何解决这个问题?
首先,is_page_template() 函数适用于 WP 模板,我的意思是文件开头有
/*
* Template name: Your Super Template
*/
所以,函数returns true 是一个实际显示此模板的页面。我会告诉你更多,你甚至不必添加自定义正文 类 因为函数 body_class() 为每个页面模板添加特定的唯一 类 :)
其次,页面模板可以在主题目录本身或一级子目录中,所以
<body <?php if ( is_page_template( 'abc.php' ) ) { body_class( 'abc' ); } else { body_class(); } ?>>
或
<body <?php if ( is_page_template( 'page-templates/abc.php' ) ) { body_class( 'abc' ); } else { body_class(); } ?>>
你的模板在2级子目录,所以它实际上不是一个页面模板,它是一个模板部分。
所以,用两个词来说,函数 is_page_template() 适用于页面模板,但不适用于模板部分
我能够在 functions.php 中添加以下内容,以便它在每次特定页面时获取 slug 并将其注入正文 class负载。
add_filter( 'body_class', function( $classes ) {
if ( is_page() ){
$slug = get_queried_object()->post_name;
return array_merge( $classes, array( $slug ) );
}
return $classes;
} );
我有一个 wordpress 网站,其中有一个自定义主题,我可以在其中为每个网页创建模板部分。当特定页面模板(例如:abc.php) 负载。
首先我在 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;
}
我不明白我在这里做错了什么。我该如何解决这个问题?
首先,is_page_template() 函数适用于 WP 模板,我的意思是文件开头有
/*
* Template name: Your Super Template
*/
所以,函数returns true 是一个实际显示此模板的页面。我会告诉你更多,你甚至不必添加自定义正文 类 因为函数 body_class() 为每个页面模板添加特定的唯一 类 :)
其次,页面模板可以在主题目录本身或一级子目录中,所以
<body <?php if ( is_page_template( 'abc.php' ) ) { body_class( 'abc' ); } else { body_class(); } ?>>
或
<body <?php if ( is_page_template( 'page-templates/abc.php' ) ) { body_class( 'abc' ); } else { body_class(); } ?>>
你的模板在2级子目录,所以它实际上不是一个页面模板,它是一个模板部分。
所以,用两个词来说,函数 is_page_template() 适用于页面模板,但不适用于模板部分
我能够在 functions.php 中添加以下内容,以便它在每次特定页面时获取 slug 并将其注入正文 class负载。
add_filter( 'body_class', function( $classes ) {
if ( is_page() ){
$slug = get_queried_object()->post_name;
return array_merge( $classes, array( $slug ) );
}
return $classes;
} );