Como eu estava procurando o mesmo, mas para obter os termos de um post, finalmente compilei isso e funciona para mim.
O que faz:
• obtém todos os termos de um nome de taxonomia para uma postagem específica.
• para uma taxonomia hierárquica com dois níveis (ex: nível1: 'país' e nível2: 'cidades'), cria um h4 com o nível1 seguido por uma lista ul do nível2 e para todos os itens do nível1.
• se a taxonomia não for hierárquica, ela criará apenas uma lista ul de todos os itens. Aqui está o código (eu o escrevo para mim, então tentei ser o mais genérico possível, mas ...):
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>';
};
};
Então, finalmente, você chama a função com isso (obviamente, você substitui my_taxonomy pelo seu): finishingLister('my_taxonomy');
Eu não finjo que é perfeito, mas como eu disse, funciona para mim.