WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Im using the following code to get an array of children taxonomies and write them out with links in an unordered list.

$termID = 10;
$taxonomyName = "products";
$termchildren = get_term_children( $termID, $taxonomyName );

echo '<ul>';
foreach ($termchildren as $child) {
    $term = get_term_by( 'id', $child, $taxonomyName );
    echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
echo '</ul>';

What I'm trying to achieve is to get the actual term (category) id so I can replace it on $termID and don't have to hardcode the id of the term.

Any help would be kindly appreciated!


share|improve this question
up vote 4 down vote accepted

Here is a function I use to list subterms:

 * Lists all subentries of a taxonomy.
 * @return void
function ttt_get_subterms( $args = array () )
    if ( ! isset ( get_queried_object()->taxonomy ) )

    $options = array (
        'child_of'           => get_queried_object_id()
    ,   'echo'               => 0
    ,   'taxonomy'           => get_queried_object()->taxonomy
    ,   'title_li'           => FALSE
    ,   'use_desc_for_title' => FALSE

    $settings = array_merge( $options, $args );

    $subtermlist = wp_list_categories( $settings );

    // Without results WP creates a dummy item. It doesn't contain links.
    ! empty ( $subtermlist ) and FALSE !== strpos( $subtermlist, '<a ' )
        and print "<ul class=subterms>$subtermlist</ul>";

Use it like wp_list_categories().

Avoid get_term_by(). It is very expensive and not necessary.

share|improve this answer
Works awesome and I get the terms listed just like wp_list_categories. Thanks! – Rise Apr 21 '11 at 2:38

To get the Current term you can use get_query_var( 'term' ); and to get the current taxonomy you can use get_query_var( 'taxonomy' ) so you can do something like this:

$term_slug = get_query_var( 'term' );
$taxonomyName = get_query_var( 'taxonomy' );
$current_term = get_term_by( 'slug', $term_slug, $taxonomyName );
$termchildren = get_term_children( $current_term->term_id, $taxonomyName );

echo '<ul>';
foreach ($termchildren as $child) {
    $term = get_term_by( 'id', $child, $taxonomyName );
    echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
echo '</ul>';
share|improve this answer
Wow, that worked perfectly! Thanks a lot :) – Rise Apr 21 '11 at 2:07

Or you can use : term_exists( $term, $taxonomy, $parent )

$term_id = term_exists( $term_name );

See WordPress Codex

Check if a given term exists and return the term ID

Returns the term ID if no taxonomy was specified and the term exists.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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