显示特定类别的自定义模板

时间:2015-03-05 13:02:10

标签: php wordpress

我有一个“程序”类别,此类别有孩子。 (例如程序 - >提高速度)

我想为节目类别的孩子显示自定义类别模板。

我发现: WordPress具有template_include函数,该函数在WordPress包含预定模板文件之前立即执行。这可以用来覆盖WordPress的默认模板行为。

所以我尝试在我的functions.php文件中使用此代码:

function wpse_template_check( $template ) {
    if ( is_category() ) {
        // Get category information
        $cat = get_query_var( 'cat' ); 
        // read the category parent 
        $parent_category = $cat->category_parent;

        //I want to load this template
        $new_template = locate_template( array( 'category-program.php' ) );

        //Program category have ID=43 so I check here if parent category = program 
        if ( ($parent_category) == 43) {
            return $new_template;
        }
    }
    return $template;
}
add_filter( 'template_include', 'wpse_template_check' );

但它没有用......

1 个答案:

答案 0 :(得分:0)

修改

这里的问题是get_query_var( 'cat' )返回当前的类别ID。如果你打开了调试,你会看到以下注意事项

  

注意错误:[8]试图获取非对象的属性

您应该将get_query_var( 'cat' )替换为get_queried_object(),这将获取查询的对象对象。