skip to Main Content

I know that i can use get_term_children() function to get childs for some parent for some taxonomy. For example, the taxonomy can be a product category.

For example, to display children product categories for a parent product category with ID = 70 i can use:

$taxonomyName = "product_cat";
    $termID = "70";
    $termchildren = get_term_children( $termID, $taxonomyName );
    var_dump($termchildren);
    echo '<ul>';
    foreach ($termchildren as $child) {
        $term = get_term_by( 'id', $child, $taxonomyName );
        echo '<li><a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a></li>';
    }
    echo '</ul>';

I tried, the code is working. But what is the id of "THE VERY-VERY TOP / BASE / 0-level" product category in wp? I want to show only first-level it’s parents. I tried "0" and "-1" as $termID, but no luck – it shows nothing. What is the right value?

2

Answers


  1. Try this:

    <?php
    
      $args = array(
             'taxonomy'     => 'product_cat',
             'orderby'      => 'name',
             'show_count'   => false, // true or false
             'pad_counts'   => false, // true or false
             'hierarchical' => false, // true or false
             'title_li'     => '',
             'hide_empty'   => true // true or false
      );
     $product_categories = get_categories( $args );
     echo '<ul>';
     foreach ($product_categories as $category) {
        if($category->category_parent == 0) { //this checks for 1st level that you wanted
          echo '<a href="'. get_term_link($category->term_id, 'product_cat') .'">'. $category->name .'</a>';
        }       
     }
     echo '</ul>';
     ?>
    

    References:

    1. get_categories
    2. get_terms
    Login or Signup to reply.
  2. so close but need to check parent:

    $taxonomyName = "product_cat";
        $termID = "70";
        $termchildren = get_term_children( $termID, $taxonomyName );
        var_dump($termchildren);
        echo '<ul>';
        foreach ($termchildren as $child) {
            $term = get_term_by( 'id', $child, $taxonomyName );
            if ($term->parent==$termID) {//check parent value here
            echo '<li><a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a></li>';
            }
        }
        echo '</ul>';
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search