Aynı şeyi ararken, ancak bir gönderinin koşullarını almak için nihayet bunu derledim ve bu benim için çalışıyor.
Ne yapar:
• belirli bir yazı için tüm taksonomi ismini alır
• iki seviyeli hiyoksik bir taksonomi için (örneğin: seviye1: 'ülke' ve seviye2: 'şehirler), seviye1'i takip eden bir h4 ve ardından seviye2'nin ul listesi ve tüm seviye1 maddeler için.
• Taksonomi hiyerarşik değilse, tüm öğelerin sadece bir ul listesini oluşturacaktır. İşte kod (benim için yazıyorum, bu yüzden olabildiğince jenerik olmaya çalıştım ama ...):
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>';
};
};
Sonunda fonksiyonu şununla çağırıyorsunuz (açıkçası, my_taxonomy'yi sizinkilerle değiştirirsiniz): finishingLister('my_taxonomy');
Mükemmel gibi davranmıyorum ama dediğim gibi benim için çalışıyor.