Wordpress功能获得帖子的顶级类别?

时间:2012-01-11 17:06:25

标签: wordpress

您好我正在努力寻找帖子中最顶级的类别。我尝试找到任何WP内置函数但失败了。

例如我有这样的类别。

Parent
     sub-1
          sub-2

我在sub-2中有一个帖子。因此,使用sub-2的ID,我试图在此示例中找到名为“Parent”的最顶级类别的ID。

7 个答案:

答案 0 :(得分:12)

好的,我最终建立了自己的功能,以获得最高级别的类别。

// function to get the top level category object
// Usage - $top_cat = get_top_category();
// echo $top_cat->slug;

function get_top_category() {
    $cats = get_the_category(); // category object
    $top_cat_obj = array();

    foreach($cats as $cat) {
        if ($cat->parent == 0) {
            $top_cat_obj[] = $cat;  
        }
    }
    $top_cat_obj = $top_cat_obj[0];
    return $top_cat_obj;
}

答案 1 :(得分:1)

看一下这个有用的脚本: Get Top Level Parent Category Id Of a Single Post

您可以更改此部分:

$catParent = $cat->cat_ID;

收件人

$catParent = $cat->name;

获取顶级类别的名称

答案 2 :(得分:0)

对于那些遇到这种方法问题的人,我找到了一个简单的解决方案,在效率方面可能不是最好的解决方案。 从帖子/产品页面获取顶级类别父级

用法:

global $post;
$terms = wc_get_product_terms( $post->ID, 'product_cat', array( 'orderby' => 'parent', 'order' => 'DESC' ) );
if ( ! empty( $terms ) ) {
    $main_term = $terms[0];
    $root_cat_id = get_top_category($main_term->term_id);

功能:

function get_top_category ($catid) {
$cat_parent_id=0;
while ($catid!=null & $catid!=0) {
    $current_term = get_term($catid); 
    $catid = $current_term->parent; 
    if($catid!=null & $catid!=0){
        $cat_parent_id = $catid;
    }else{
        $cat_parent_id = $current_term->term_id;
    }
}
return $cat_parent_id;
}

答案 3 :(得分:0)

试试这个

$categories = get_categories( array(
    'orderby' => 'name',
    'parent'  => 0 //this parameter is important for top level category
    )
);

答案 4 :(得分:0)

今天的好答案是:

$cats = get_the_terms( false, 'category' );
$topcat = array();

foreach($cats as $cat)
{
    if ($cat->parent == 0)
        $topcat = $cat;  
}

因为即使帖子仅在“ sub2”中,即使“ sub2”是“ sub1”的子类别,get_the_category也不返回“ sub1”类别。 您可以使用get_cat_ID获取猫的ID ...

答案 5 :(得分:0)

    $top_category = get_the_category_list(',');
    echo $top_category;

答案 6 :(得分:-2)

我需要父ID,这对我来说很简单:

$topcat = get_the_category();
echo $topcat[0]->category_parent;