列出父术语的子术语

时间:2014-08-22 作者:streetfire

我正在使用以下代码生成分类法中仅包含子术语的列表。我还想做的是在taxonomy-mytax-myterm.php 每个父级的模板。我正试图操纵下面的代码来实现这一点(同时仍然排除父项),但我不确定如何/在何处指定当前父项,以及获取父项下的所有术语。

另外,好奇的是,在这样的分类法归档中,是否可以使用此方法实现分页?我找到了通过页面模板实现分页的方法,但了解到它在CPT的归档模板上不起作用。不确定这是否也适用于分类法存档模板?

<?php
$args = array(
  \'orderby\' => \'name\',
  );
$terms = get_terms( \'mytaxname\', $args );
 if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach ( $terms as $term ) {

        if( 0 == $term->parent )
            continue;

        echo \'<a href="\' . get_category_link( $term->term_id ) . \'">\' . $term->name . \'</a><br/>\';
    } 
}
?>

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

当您在分类法页面上时,可以使用以下代码从显示的术语中获取父项get_queried_object. 看见get_terms 对于返回的对象

$queried_object = get_queried_object(\'term\');
  $term = $queried_object->parent;
要获得分类,只需添加

$tax = $queried_object->taxonomy;
低于上述代码。然后可以在上面的代码中使用,如下所示

<?php

$queried_object = get_queried_object(\'term\');
  $term_parent = $queried_object->parent;
  $tax = $queried_object->taxonomy;

$args = array(
  \'parent\' => $term_parent,
  \'orderby\' => \'name\',
  );

$terms = get_terms( $tax, $args );
 if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach ( $terms as $term ) {

        echo \'<a href="\' . get_category_link( $term ) . \'">\' . $term->name . \'</a><br/>\';
    } 
}
?>
上面的代码可以在您的taxonomy-mytax-myterm.php 显示术语父级的术语列表。

至于你的第二个问题,答案是否定的。归档页面并不是为了创建对象的分页索引列表。它们专门用于显示特定层次结构中的文章,因此分类法归档旨在显示特定术语中的分页“列表”,而不是术语的分页索引列表。

要了解什么是档案,需要深入挖掘核心。看看wp-includes/query.php#L1615

1615     if ( $this->is_post_type_archive || $this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax )
1616     $this->is_archive = true;
因此,以下内容被视为归档页

类别。php

标签。php

存档。php

作者。php

分类法。php

日期。php

因此,如果您需要一个分页的术语索引页,那么您需要坚持使用页面模板

有关其他信息,请查看以下链接

结束

相关推荐

Get_the_Terms仅返回上一学期

在我的自定义帖子类型(portfolio\\u pt)中,我有一些类似的层次类别结构:ParentCat |-child |-someItem ParentCat2 |-cild ... 当我尝试通过get\\u获取所有术语的列表时,“someItem”post的\\u terms函数此函数只返回最后一个类别(“子类别”而不返回“父类别”),例如:global $post; $terms = get_the_terms( $post->