如何将类分配给具有自定义模板的页面?

时间:2015-08-02 作者:Iurie

我尝试使用下面的代码为带有自定义模板的页面分配一个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\' );

1 个回复
最合适的回答,由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-mytemplatepage-template-mytemplate-php. 它们将是独一无二的,您可以使用它们。

结束

相关推荐

Custom Post Templates

The Issue: 我正在寻找定制的单篇文章模板,以添加或删除单个元素作为普通单篇文章的功能。有很多方法可以在WordPress中为单个帖子创建自定义帖子模板。尤其是post格式是使用默认模板处理默认情况的绝佳机会;然而,我需要真正的自定义模板。The Idea: 我的第一种方法是根据post ID添加if/else语句:// check if custom post if ( is_single(\'999\') ) // check if there is a custom