woocommerce - 如何获得当前产品类别的最顶级类别

新手上路,请多包涵

我有一个 Woocommerce 产品,我需要在该页面上显示分配给该产品的类别的最顶级类别

- Main Product Category
-- Sub Product Category
--- Category Assigned to product

我需要获取“主要产品类别”的ID或名称,以便在单个产品类别中显示它。

我已经尝试执行以下操作:

 global $post;
$terms = get_the_terms( $post->ID, 'product_cat' );

foreach ($terms as $term) {
$product_cat_id = $term->term_id;

$thetop_parent = woocommerce_get_term_top_most_parent( $product_cat_id , 'product_cat' );

echo $thetop_parent;
}

但它根本不起作用,它会阻止页面在 woocomerce_get_term 之后加载……我不知道此时该怎么做它

感谢您对此的任何帮助。

原文由 Gman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 352
2 个回答

经过大量研究,我想出了解决这个问题的方法。我希望这会对某人有所帮助。

解决方案:

 global $post;
$prod_terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($prod_terms as $prod_term) {

    // gets product cat id
    $product_cat_id = $prod_term->term_id;

    // gets an array of all parent category levels
    $product_parent_categories_all_hierachy = get_ancestors( $product_cat_id, 'product_cat' );

    // This cuts the array and extracts the last set in the array
    $last_parent_cat = array_slice($product_parent_categories_all_hierachy, -1, 1, true);
    foreach($last_parent_cat as $last_parent_cat_value){
        // $last_parent_cat_value is the id of the most top level category, can be use whichever one like
        echo '<strong>' . $last_parent_cat_value . '</strong>';
    }

}

原文由 Gman 发布,翻译遵循 CC BY-SA 3.0 许可协议

或者也许是这样的:

 $cat = get_the_terms( $product->ID, 'product_cat' );

foreach ($cat as $categoria) {
if($categoria->parent == 0){
   echo $categoria->name;
}
}

原文由 Mauro 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏