Praveen
Praveen

Reputation: 1005

How to get Woocommerce Top level product categories?

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

Answers (2)

LoicTheAztec
LoicTheAztec

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

Ali_k
Ali_k

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

Related Questions