如何从单个页面显示自定义帖子模板?

时间:2013-08-18 作者:pagol

我们知道,在WordPress中,默认的post模板文件是single.php. 现在,我有一个类别名称“members”,希望members帖子显示一个自定义模板,如content-members.php.

我可以通过自定义帖子模板插件来实现这一点。但是,有没有一种方法可以在没有插件的情况下做到这一点?

也许我们可以这样做:

<?php
    if ( is_category( \'members\' ) ) {

         get_template_part( \'content\', \'members\' );

    } else {

        get_template_part( \'content\', \'common\' );

    }
 ?>
我已经试过了,但它不起作用,我认为这里并没有触发类别。

2 个回复
最合适的回答,由SO网友:Michelle 整理而成

我相信你可能需要in_category() 而不是is_category().

in\\u category()检查当前帖子是否在类别中,is\\u category()检查它是否是类别存档页。

SO网友:epilektric

你是对的,单身。php模板没有任何与之关联的类别。您需要首先获取该帖子的类别。

Single Category

$category = get_the_category();
$cat_name = $category[0]->cat_name;
if ( $cat_name == \'Members\' ) {

     get_template_part( \'content\', \'members\' );

} else {

    get_template_part( \'content\', \'common\' );

}
这里需要注意的一点是:这只获取与帖子相关的第一个类别。如果帖子属于多个类别,并且“成员”不是列表中的第一个类别,那么帖子将不会使用正确的模板。

Multiple Categories

如果您想将其用于多个类别,则需要遍历它们并寻找正确的类别。

$categories = get_the_category();
$cat_exists = false;
foreach($categories as $category) {
    if( $category->name == \'Members\' ) {
        $cat_exists = true;
        break;
    }
} 
if ( $cat_exists ) {

     get_template_part( \'content\', \'members\' );

} else {

    get_template_part( \'content\', \'common\' );

}

结束

相关推荐