Поскольку я искал то же самое, но чтобы получить условия одного поста, я наконец скомпилировал это, и это работает для меня.
Что он делает:
• получает все термины названия таксономии для определенного поста.
• для иерархической таксономии с двумя уровнями (например, уровень 1: «страна» и уровень 2: «города») создается h4 с уровнем 1, за которым следует список ul уровня 2 и это для всех элементов уровня 1.
• если таксономия не является иерархической, она создаст только список ul всех элементов. вот код (я пишу его для себя, поэтому я старался быть как можно более универсальным, но ...):
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>';
};
};
Итак, наконец, вы вызываете функцию с этим (очевидно, вы заменяете my_taxonomy на ваш): finishingLister('my_taxonomy');
Я не притворяюсь, что это идеально, но, как я уже сказал, это работает для меня.