使子分类类别使用集合模板

时间:2015-06-01 作者:Legin76

我有一个称为产品类别的自定义分类法。目前,所有类别都使用主模板(taxonomy product categories.php)。

类别树大致如下所示。

Products 
- Cheese
-- Types of Cheese
--- Cheddar
--- Brie
--- Cheshire
-- Types of Milk
--- Cows Cheese
--- Goats Cheese
- Cakes
- Category
我想将其设置为所有类别,包括树的cheese部分中的sub\\u类别,都使用cheese模板(taxonomy product categories cheese.php)。使用其他区域的其他模板。

我发现了一个两年前发布的帖子,它似乎是解决方案,但似乎什么都没做。

Make Custom Taxonomy Category Use Parent Template

我在函数中添加了以下内容。php

add_filter(\'template_include\', \'cheese_term_template\');

function cheese_term_template( $template ) {
  if ( is_tax(\'classifications\') ) {
    // $parent = get_term_by(\'slug\', \'cheese\', \'classifications\');
    $parent = 13;
    if ( term_is_ancestor_of( $parent, get_queried_object(), \'classifications\' ) )
       return get_template_directory() . \'/taxonomy-product-categories-cheese.php\';
  }
  return $template;
}
我认为它是在寻找顶级类别,但当我做了一些测试,它也没有工作。我想知道这是否是因为分类名称中有一个连字符。

我很感激任何帮助。。。谢谢

1 个回复
SO网友:Howdy_McGee

WordPress有一个Template Hierarchy - specifically for taxonomies and terms. 因此,您想要的模板名称应遵循以下几行:

taxonomy-{$taxonomy}-{$term-slug}.php

在您的情况下:

taxonomy-classifications-cheese.php

这将抓住cheese 分类并显示此特定模板。我不完全确定这是否也会捕获子类别(在尝试以下内容之前,我会先测试上面的内容),但如果不能,您可以:

function cheese_template_redirect( $template ) {

    if ( is_tax( \'classifications\' ) ) {
        $term   = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
        $cheese = 13;   // This should be "Cheese" Category
        if ( term_is_ancestor_of( $cheese, $term->term_id, \'classifications\' ) ) {
            $new_template = locate_template( array( \'taxonomy-classifications-cheese.php\' ) );
            if ( \'\' != $new_template ) {
                return $new_template ;
            }
        }
    }

    return $template;
}
add_filter( \'template_include\', \'cheese_template_redirect\', 99 );
看起来您的问题是您正在使用实际的分类法重写slug,这是我们不想使用的。我还没有测试过上述代码,但如果它不起作用或遇到问题,请告诉我。

结束

相关推荐

Custom Post Templates

The Issue: 我正在寻找定制的单篇文章模板,以添加或删除单个元素作为普通单篇文章的功能。有很多方法可以在WordPress中为单个帖子创建自定义帖子模板。尤其是post格式是使用默认模板处理默认情况的绝佳机会;然而,我需要真正的自定义模板。The Idea: 我的第一种方法是根据post ID添加if/else语句:// check if custom post if ( is_single(\'999\') ) // check if there is a custom