我如何只获得父母条款?


Answers:


38

是的,get_terms正如Michael指出的那样,只需在调用它时将parent参数传递给。

由于WP 4.5,这是推荐用法:

$myterms = get_terms( array( 'taxonomy' => 'taxonomy_name', 'parent' => 0 ) );

在WP 4.5之前,这是默认用法:

$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );

将返回其父值为的所有字词0,即。顶级条款。


它为自定义分类法返回空数组:(
Mamaduka

该分类法中的术语是否与帖子(或自定义类型)相关联?如果不是,则需要传递hide_empty参数,并将其设置为0也,这样您就可以查看当前未使用的术语。
t31os 2011年

请注意,这只会获得父级1,即“母”项。要检索所有祖先,请使用get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors
jave.web


2

对于woocommerce电子邮件模板,请使用以下命令:

$terms = get_the_terms( $_product->id , 'product_cat');
    if($terms) {
        foreach( $terms as $term ) {
            $term = get_term_by("id", $term->parent, "product_cat");
            if ($term->parent > 0) {
                $term = get_term_by("id", $term->parent, "product_cat");
            }
            $cat_obj = get_term($term->term_id, 'product_cat');
            $cat_name = $cat_obj->name;
        }
    }
echo '<br />('. $cat_name . ')';

5
请添加一些解释,说明您的代码如何解决该问题。OP并未对woocommerce电子邮件模板提出任何疑问。
iEmanuele 2013年

1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );

3
这与两年多前提出的(已经接受的)答案有何不同?
tfrommen

您是否看到了(已接受)答案的评论?如果没有更多的答案是没有用的,为什么这个问题仍然存在?
ashraf mohammed

对于未显示的术语有一个查询,与原始问题无关,我在答复评论中解决了该问题(因为它与已经提供的答案的有效性或正确性无关)。
t31os 2014年

1
请在修改中解决。解释您的代码。
kaiser 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.