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="https://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.