您准备了模板(继续使用您的示例):
content-redfruits.php
, content-greenfruits.php
, content-fruits.php
.
然后在分类法文件中
taxonomy-fruit.php
(复制并重命名
taxonomy.php
或
index.php
), 在主循环之前,检查当前查询对象的术语slug。
$red_templ = [\'strawberries\', \'tomatoes\', \'raspberries\']; // term slugs
$green_templ = [\'watermelons\', \'apples\', \'kiwi\']; // term slugs
$template = \'fruits\';
$obj = get_queried_object();
if ( $obj instanceof WP_Term ){
if ( in_array($obj->slug, $red_templ) )
$template = \'redfruits\';
else if ( in_array($obj->slug, $green_templ) )
$template = \'greenfruits\';
}
while ( have_posts() ) : the_post();
get_template_part( \'content\', $template );
endwhile;
Edit: (回答注释)
上述示例可以使用
is_tax
:
$red_templ = [\'strawberries\', \'tomatoes\', \'raspberries\']; // term slugs
$green_templ = [\'watermelons\', \'apples\', \'kiwi\']; // term slugs
$template = \'fruits\';
if ( is_tax(\'fruit\', $red_templ) ) // check taxonomy, then check terms
$template = \'redfruits\';
else if ( is_tax(\'fruit\', $green_templ) ) // check taxonomy, then check terms
$template = \'greenfruits\';
while ( have_posts() ) : the_post();
get_template_part( \'content\', $template );
endwhile;
is_tax
执行一些额外的比较,但这里的性能没有显著差异
每次打电话
is_tax
, 您可以检查给定的分类法是否与当前分类法匹配(在选择模板文件时已经检查过),并按id、slug和name比较术语。
您不想使用has_term
在这种情况下。此函数用于post,因此对于空术语,它将错误返回false
.