Ein kleines, aber lästiges Detail der Funktion get_the_terms(): Die zurückgegebenen Terms werden nicht alphabetisch sortiert, so wie man es sich erwarten würde.
Die Lösung: Selbst sortieren.
Hier ein Beispiel aus einer functions.php:
$terms = get_the_terms($post->ID, 'besonderheiten'); foreach ( $terms as $term ) { $besonderheiten[$term->slug] = $term; } ksort($besonderheiten); if (! empty($besonderheiten) ) { echo '<h2 id="bhintro">Besonderheiten</h2><span class="icondata">'; foreach ( $besonderheiten as $besonderheit ) { echo '<img src="http://www.ostheimer.at/angelkarten/wp-content/uploads/2014/08/' . $besonderheit->slug . '.png" title="Besonderheit ' . $besonderheit->name . '" alt="Besonderheit ' . $besonderheit->name . '" /> ' . $besonderheit->name . '<br />'; } echo '</span>'; }
Zuerst werden die Terms in $terms gespeichert, danach sortieren wir die enthaltenen Daten nach dem slug was in meinem Fall Sinn macht. Eine Sortierung nach name ist auch oft erforderlich. Die Sortierung übernimmt die PHP-Funktion ksort, welche ein vorher angelegtes Array nach name sortiert und damit die zweite foreach-Schleife mit sortierten Daten versorgt.