19

Is there any way to get only parent terms from custom taxonomy or category?

38

Yes, just pass in the parent parameter to get_terms when you call it, as Michael pointed out.

Since WP 4.5 this is the recommend usage:

$myterms = get_terms( array( 'taxonomy' => 'taxonomy_name', 'parent' => 0 ) );

Prior to WP 4.5 this was the default usage:

$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );

Will return all terms that have a parent value of 0, ie. top level terms.

  • It returns empty array for custom taxonomies :( – Mamaduka Aug 2 '11 at 13:14
  • Are the terms in that taxonomy associated with a post(or custom type)? If not, you'll need to pass along the hide_empty parameter, setting that to 0 also, so you're able to see terms currently not used. – t31os Aug 2 '11 at 13:25
  • Note that this will only get parent level 1 , the "mother" term. To retrieve all ancestors, use get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors – jave.web Apr 13 '17 at 6:07
2

use the 'parent' parameter:

http://codex.wordpress.org/Function_Reference/get_terms

or

http://codex.wordpress.org/Function_Reference/get_categories

2

for woocommerce email templates use the following:

$terms = get_the_terms( $_product->id , 'product_cat');
    if($terms) {
        foreach( $terms as $term ) {
            $term = get_term_by("id", $term->parent, "product_cat");
            if ($term->parent > 0) {
                $term = get_term_by("id", $term->parent, "product_cat");
            }
            $cat_obj = get_term($term->term_id, 'product_cat');
            $cat_name = $cat_obj->name;
        }
    }
echo '<br />('. $cat_name . ')';
  • 5
    please add some explanation, on how your code could solve the question. OP didn't make a question about woocommerce email templates. – iEmanuele Sep 2 '13 at 14:34
1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );
  • 3
    How is this different than the (already accepted) answer proposed more than two years ago? – tfrommen Oct 24 '13 at 8:31
  • did you see comments on the (already accepted) answer ? if no more answers are not useful why the question still opened ?! – ashraf mohammed Nov 12 '13 at 13:42
  • There was a single query with regard to terms not showing up, that was unrelated to the original question, i addressed that issue in a reply comment(as it had no bearing on the validity or correctness of the answer already provided). – t31os Jan 28 '14 at 13:48
  • 1
    Please address that in an edit. Explain your code. – kaiser Feb 3 '14 at 22:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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