How can I get the bottom-most level terms for a custom taxonomy?

Taxonomy Hierarchy example,

Custom Taxonomy: "product-category"

Top Level Terms -> Second Level Terms -> Third Level Terms -> Bottom most Level Terms

I want to get only Bottom most level taxonomy terms. I want to get this on out of the loop on index.php page, so setting parent id is not possible in get_terms() function.

1 Answer 1


Here is the solution I ended up with. This may help others too.

$taxonomy = "product-category";

    $args = array(
        'taxonomy' => $taxonomy,
        'orderby' => 'name',
        'order' => 'ASC',
        'hierarchical'  => true,
        'hide_empty' => false,

    $the_query = new WP_Term_Query($args);
    $categories = $the_query->get_terms();

    if ($categories){

        foreach($categories as $category){
            $ancestors = get_ancestors( $category->term_id, $taxonomy );
            $category->ancestors = $ancestors; 
            $category->depth = count( $ancestors ) ;

            if($category->depth === 3) :    

                echo $category->term_id . '-' . $category->depth . '-' . $category->name;   



First, I used WP_Term_Query Class to create the terms object and build my custom query then get_terms() to retrieve all the terms.

Inside foreach loop used get_ancestors() function to return the array containing the parents of the given object and $category->depth to get the current depth.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.