I have a Woocommerce product and I need to display on that page the Most top level category of a category assigned to the product
- Main Product Category
-- Sub Product Category
--- Category Assigned to product
I need to get the ID or name of "Main Product Category" so that I can display it in the single product category.
I already tried doing the following:
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;
}
But It didn't worked at all and it brakes the page from loading after woocomerce_get_term... I'm not sure what to do at this point It
thanks for any help on this.
After a lot of research I figured a way to solve this. I hope this will help someone.
solution:
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>';
}
}