Show children of top level category only

Ok, try this. It should capture the current category object and then go up the chain until it finds the current categories top-most ancestor.

    // get the category object for the current category
    $thisCat = get_category( get_query_var( 'cat' ) ); 

    // if not top-level, track it up the chain to find its ancestor
    while ( intval($thisCat->parent) > 0 ) {
        $thisCat = get_category ( $thisCat->parent );
    }

    //by now $thisCat will be the top-level category, proceed as before
    $args=array(
        'child_of' => $thisCat->term_id,
        'hide_empty' => 0,
        'orderby' => 'name',
        'order' => 'ASC'
    );
    $categories=get_categories( $args );
    foreach( $categories as $category ) { 
        echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';  } 
?>

Leave a Comment