我有一个类别模板:category-projects.php
此类别有子类别,但是它们引用模板category.php作为指令而不是父类别。如何使子类别在模板引用的级联顺序中引用父类别模板?
*注意,我说的是类别网址,而不是帖子。
答案 0 :(得分:13)
执行此操作的一种方法是隐藏functions.php
文件中的template_redirect
操作:
function myTemplateSelect() {
if (is_category() && !is_feed()) {
if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) {
load_template(TEMPLATEPATH . '/category-projects.php');
exit;
}
}
}
add_action('template_redirect', 'myTemplateSelect');
答案 1 :(得分:1)
据我所知;根据wp模板层次结构,category-samplecat.php仅适用于slug名称为“samplecat”的类别。所以不可能这样做。
但是在category.php文件中(适用于没有特殊模板文件的每个类别),您可以进行条件检查,如果当前类别是“项目”的子项(在我的{{3中使用此方法)如果是这样你可以将category-projects.php的相同结构应用于它或包含category-projects.php。
答案 2 :(得分:1)
理查德的答案确实有效,但它会严重干扰其他插件。
我使用add_filter
&找到了更好的选择。 template_include
如下例所示
add_filter( 'template_include', 'my_callback' );
function my_callback( $original_template ) {
if ( some_condition() ) {
return SOME_PATH . '/some-custom-file.php';
} else {
return $original_template;
}
}
归功于https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/