使用父模板创建自定义分类类别

时间:2013-09-05 作者:streetfire

我在我的functions.php 称为“研究”

我有一个叫做“分类”的自定义分类法

根据该分类法,我有以下术语/类别:

Old Research (parent) 
--- sub cat 1 
--- sub cat 2
我已经创建了文件“taxonomy Classifications oldresearch.php”,它成功地为我更改了父布局。但是,它不包含子类别中的布局。子类别页面将还原为另一个文件taxonomy-Classifications.php

我可以通过创建taxonomy-Classifications-subcat1-oldresearch.php 但我将有很多子类别,我想使用一个模板-父cat模板。这样,我就不必为每个新类别创建新的模板文件。

4 个回复
最合适的回答,由SO网友:gmazzap 整理而成

钩入template_include 滤器

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

function research_term_template( $template ) {
  if ( is_tax(\'classifications\') ) {
    $parent = get_term_by(\'slug\', \'oldresearch\', \'classifications\');
    // to improve performance you can hardcoding \'oldresearch\' term id
    // $parent = 12;
    if ( term_is_ancestor_of( $parent, get_queried_object(), \'classifications\' ) )
       return get_template_directory() . \'/taxonomy-Classifications-oldresearch.php\';
  }
  return $template;
}

SO网友:Vinod Dalvi

更改模板文件名分类oldresearch。php到分类法分类。php,以便它可以用于分类的父项和子项自定义分类法。

SO网友:cybmeta

正在读取taxonomy templates hierarchy 文档似乎正在按预期工作。文件taxonomy-Classifications-oldresearch.php 特定于oldresearch 术语和该文件不会被任何其他术语使用。文件分类法分类。php将用于Classifications 除具有特定模板的术语外的分类法,如taxonomy-Classifications-oldresearch.php.

模板分类层次结构如下所示:

特定于术语的模板是Wordpress使用的第一个模板(在本例中taxonomy-Classifications-oldresearch.php).taxonomy-Classifications.php).要改变此行为,可以检查当前术语的父项并使用get_template_part() 函数或include/require加载所需的模板。我认为没有其他解决办法。例如,在taxonomy-Classifications.php:

$term = get_term_by( \'slug\', get_query_var(\'term\'), \'Classifications\' );
if($term->parent == \'your_oldresearch_term_ID\'){
   inclue(get_template_directory().\'/taxonomy-Classifications-oldresearch.php\');
} else {
  .....
  .....
}

SO网友:epilektric

在里面taxonomy-Classifications.php 您可以添加一些逻辑来检查术语,然后包括特定于该术语的循环模板。

// seudo-code logic example
if Classifications,  
    use loop-classifactions.php  

else if Classifications -> Old Research,  
    use loop-classifications-oldresearch.php

else if Classifications -> Old Research -> Child Term,  
    use loop-classifications-oldresearch-child.php
我相信这就是你想要的解决方案。Get template part based on custom taxonomy term

结束

相关推荐

Sub category templates

我继承了一个Wordpress网站,我的公司在我开始在这里工作之前就建立了这个网站。我会去问建造它的人这个问题,但他现在已经离开了公司。我的查询与wordpress类别的自定义模板相关。我知道您可以创建一个名为“类别-”的模板文件。当访问该类别时,它将使用该自定义模板。在本例中,该文件称为“category limousin magazine”。php\'这很好——我的问题涉及到这个类别的子类别,即在《利木赞》杂志下,我有2011、2010、2009、2008、2007和2006个类别。不知何故,在建立网