有什么方法可以从自定义分类法或类别中仅获取父项吗?

#1 楼

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

由于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
2011年8月2日在13:14

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

– t31os
2011年8月2日在13:25



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

–jave.web
17年4月13日在6:07

#2 楼

使用'parent'参数:

http://codex.wordpress.org/Function_Reference/get_terms



http:// codex .wordpress.org / Function_Reference / get_categories

#3 楼

对于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 . ')';


评论


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

– iEmanuele
2013年9月2日14:34在

#4 楼

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


评论


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

–tfrommen
13-10-24在8:31

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

– Ashraf Mohammed
2013年11月12日13:42



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

– t31os
2014年1月28日13:48

请在修改中解决。解释您的代码。

– kaiser
2014年2月3日在22:19

#5 楼

对于此演示,我们将假定有一个称为“ Books”的分类法。
我们可能具有以下层次结构:
Fiction (id: 699)
 - This is a Fiction Story.
Non-Fiction
 - Title of Non-fiction
Fantasy
  -  ...

我们想获得分类法的父项“ Books”
/* Get the Parent Taxonomy Term Name by post Id */

function get_parent_term_by_post_id($taxname, $taxid=null){

if(isset($taxid)):

    //Get by term Id passed in function
    $parent_tax = get_term_by('id', $taxid, $taxname);

    return $parent_tax ->name; //use name, slug, or id

else:

     //Get by PostId of current page
     $terms = wp_get_post_terms( get_the_id(), $taxname);

     $tax_parent_id = $terms[0]->parent;

     if($tax_parent_id == 0):
      $tax_parent_id = $terms[0]->parent; //get the next parent ID
     endif; 

     $parent_tax = get_term_by('id', $tax_parent_id , $taxname);

     return $parent_tax ->name; //use name, slug, or id

endif;

}

,然后您就可以像这样在模板上运行:
//enter custom tax name. will grab by post id 
echo get_parent_term_name_by_post_id('books'); //returns Fiction
//by term ID 
echo get_parent_term_name_by_post_id('books', 699); //returns Fiction