我尝试使用下面的代码为带有自定义模板的页面分配一个body类,但这不起作用。这里怎么了?
function prefix_conditional_body_class($classes) {
if ( get_page_template_slug(get_the_ID()) === \'mytemplate.php\' ) {
$classes[] = \'mytemplate\';
}
return $classes;
}
add_filter( \'body_class\', \'prefix_conditional_body_class\' );
更新2
模板分配给具有以下代码的页面:
function my_template_redirect() {
if ( is_page(\'search-results\') ) : // the page real name
include (STYLESHEETPATH . \'/search-results.php\'); // the template real name
exit;
endif;
}
add_action( \'template_redirect\', \'my_template_redirect\' );
更新1
我对上面的函数做了一些修改,现在它可以工作了(替换get_page_template_slug(get_the_ID()) === "mytemplate.php"
具有is_page( 8 )
, 其中8是页面的ID):
function prefix_conditional_body_class($classes) {
if ( is_page( 8 ) ) { // the ID of the needed page
$classes[] = \'mytemplate\';
}
return $classes;
}
add_filter( \'body_class\', \'prefix_conditional_body_class\' );
最合适的回答,由SO网友:Mayeenul Islam 整理而成
使用is_page(8)
将使您的代码有点静态。让我们在您追求的过程中让它充满活力is_page_template()
:
<?php
function prefix_conditional_body_class( $classes ) {
if( is_page_template(\'mytemplate.php\') )
$classes[] = \'mytemplate\';
return $classes;
}
add_filter( \'body_class\', \'prefix_conditional_body_class\' );
在子主题中为我工作,模板文件位于子主题的根目录中,使用模板Twenty15。
如果您正在使用body_class()
您将在那里获得两门课程:page-template-mytemplate
和page-template-mytemplate-php
. 它们将是独一无二的,您可以使用它们。