您好我正在努力寻找帖子中最顶级的类别。我尝试找到任何WP内置函数但失败了。
例如我有这样的类别。
Parent
sub-1
sub-2
我在sub-2中有一个帖子。因此,使用sub-2的ID,我试图在此示例中找到名为“Parent”的最顶级类别的ID。
答案 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;