Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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

    <?php
$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!

Thanks!

share|improve this question
add comment

3 Answers

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 ) )
    {
        return;
    }

    $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
add comment

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
add comment

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
add comment

Your Answer

 
discard

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.