类别所有子类别的帖子模板不同

时间:2017-06-28 作者:Rajpreet

我想为一个类别的所有子类别的帖子使用不同的模板。下面是我正在使用的代码:

add_filter( \'single_template\', \'get_custom_cat_template\' ) ;
function get_custom_cat_template( $single_template ) {
    global $post;
    if ( is_category( \'blog\' ) || in_category( \'blog\' ) ) {
        $single_template = dirname( __FILE__ ) . \'/single-blog.php\';
    }

    return $single_template;
}
这里的“博客”是一个类别。此代码仅适用于父类别(博客)。对于子类别的帖子,它是加载默认值single.php 文件

如何更改代码以使其适用于父类别的所有子类别?

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

您可以检查当前类别是否是博客类别的子类别cat_is_ancestor_of() 功能或term_is_ancestor_of(), 或者更好,使用in_category(), 正如您当前所做的,但也要检查子类别。

add_filter( \'single_template\', \'get_custom_cat_template\' ) ;
function get_custom_cat_template( $single_template ) {


    // You want to filter only template for single posts of default post type    
    if( is_singular( \'post\' ) ) {

        $post = get_queried_object();
        // Replace \'3\' with the ID of the \'blog\' category
        $child_blog_categories = get_term_children( \'3\', \'category\' );

        if ( in_category( \'blog\', $post ) || in_category( $child_blog_categories, $post ) ) {

            $single_template = locate_template( \'single-blog.php\' );

        }

    }

    return $single_template;
}
无论如何,我认为如果您看到自己创建了一个帖子类别,以不同的方式管理该类别中的帖子,那么您可能需要查看自定义帖子类型。

结束

相关推荐

Get posts by birthday

我正在开发一个博客网站,它是一个传记目录,我如何才能获得特定出生日期的帖子,以及如何获取今天出生日期的帖子。例如:在5月17日,may想要为5月17日出生的人展示传记帖子。并于5月18日为5月18日出生的人张贴传记。我附上了一张图片,还链接了一个具有类似功能的网站,我想知道如何做到这一点。 http://frostsnow.com/