使Wordpress子类别使用类别模板

时间:2010-06-25 01:10:35

标签: wordpress templates categories

我有一个类别模板:category-projects.php

此类别有子类别,但是它们引用模板category.php作为指令而不是父类别。如何使子类别在模板引用的级联顺序中引用父类别模板?

*注意,我说的是类别网址,而不是帖子。

3 个答案:

答案 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/