Como estaba buscando lo mismo pero para obtener los términos de una publicación, finalmente compilé esto, y funciona para mí.
Lo que hace:
• obtiene todos los términos de un nombre de taxonomía para una publicación específica.
• para una taxonomía jerárquica con dos niveles (por ejemplo, nivel1: 'país' y nivel2: 'ciudades'), crea un h4 con el nivel1 seguido de una lista ul de nivel2 y esto para todos los elementos de nivel1.
• si la taxonomía no es jerárquica, creará solo una lista ul de todos los elementos. aquí está el código (lo escribí para mí, así que traté de ser lo más genérico posible pero ...):
function finishingLister($heTerm){
$myterm = $heTerm;
$terms = get_the_terms($post->ID,$myterm);
if($terms){
$count = count($terms);
echo '<h3>'.$myterm;
echo ((($count>1)&&(!endswith($myterm, 's')))?'s':"").'</h3>';
echo '<div class="'.$myterm.'Wrapper">';
foreach ($terms as $term) {
if (0 == $term->parent) $parentsItems[] = $term;
if ($term->parent) $childItems[] = $term;
};
if(is_taxonomy_hierarchical( $heTerm )){
foreach ($parentsItems as $parentsItem){
echo '<h4>'.$parentsItem->name.'</h4>';
echo '<ul>';
foreach($childItems as $childItem){
if ($childItem->parent == $parentsItem->term_id){
echo '<li>'.$childItem->name.'</li>';
};
};
echo '</ul>';
};
}else{
echo '<ul>';
foreach($parentsItems as $parentsItem){
echo '<li>'.$parentsItem->name.'</li>';
};
echo '</ul>';
};
echo '</div>';
};
};
Entonces finalmente llamas a la función con esto (obviamente, reemplazas my_taxonomy por la tuya): finishingLister('my_taxonomy');
No pretendo que sea perfecto, pero como dije, funciona para mí.