Reputation: 1005
I am trying to retrieve top level product categories in the home template. I used below code but don't know why it is not working.
<?php
global $post, $product;
$taxonomy = 'product_cat'; //Choose the taxonomy
$terms = get_terms( $taxonomy ); //Get all the terms
foreach ($terms as $term) { //Cycle through terms, one at a time
// Check and see if the term is a top-level parent. If so, display it.
$parent = $term->parent;
if ( $parent=='0' ) {
$term_id = $term->term_id; //Define the term ID
$term_link = get_term_link( $term, $taxonomy ); //Get the link to the archive page for that term
$term_name = $term->name;
echo '<a class="ccats" href="' . $term_link . '"><span class="label">' . $term_name . '</span></a>';
} }
?>
Please help me to get the top level categories.
Upvotes: 3
Views: 1429
Reputation: 253868
You just need the following arguments in get_terms()
function:
$terms = get_terms( array('taxonomy' => 'product_cat', 'parent' => 0) );
foreach ( $terms as $term ){
$term_link = get_term_link( $term, $taxonomy );
echo '<a class="ccats" href="'.$term_link.'"><span class="label">'.$term->name.'</span></a>';
}
Here are all available arguments that can be used in get_terms()
function.
For product category image: Get and display the product category featured image in Woocommerce
Upvotes: 4
Reputation: 1661
You could use like this:
<?php
$taxonomy = 'product_cat';
$orderby = 'title';
$show_count = 0; // 1 for yes, 0 for no
$pad_counts = 0; // 1 for yes, 0 for no
$hierarchical = 1; // 1 for yes, 0 for no
$title = '';
$empty = 1;
$order = 'ASC';
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title,
'hide_empty' => $empty,
'order' => $order,
'parent' => 0
);
$terms = get_categories( $args );
foreach ($terms as $term) { //Cycle through terms, one at a time
// Check and see if the term is a top-level parent. If so, display it.
if($term->category_parent == 0){
$term_id = $term->term_id; //Define the term ID
$term_link = get_term_link( $term, $taxonomy ); //Get the link to the archive page for that term
$term_name = $term->name;
echo '<a class="ccats" href="' . $term_link . '"><span class="label">' . $term_name . '</span></a>';
}
}
?>
Upvotes: 2