我有一个“程序”类别,此类别有孩子。 (例如程序 - >提高速度)
我想为节目类别的孩子显示自定义类别模板。
我发现: 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' );
但它没有用......
答案 0 :(得分:0)
修改强>
这里的问题是get_query_var( 'cat' )
返回当前的类别ID。如果你打开了调试,你会看到以下注意事项
注意错误:[8]试图获取非对象的属性
您应该将get_query_var( 'cat' )
替换为get_queried_object()
,这将获取查询的对象对象。