Ich speichere das hier mal als übersichtlichen Beitrag zum Nachschlagen ab, immerhin habe ich mir fast ein Bein ausgerissen, um an die enstprechenden Informationen zu kommen. Was ich so gelesen habe zu dem Thema, geht bin ich damit auch nicht alleine. Vielleicht hilft dieser Beitrag ja dem Ein oder Anderen da draußen 😉

Motivation

Der eigenen Custom-Post-Type „Rezepte“ ist definiert und via Plugin eingebunden und eine zugehörige Taxonomie „Speise-Kategorien“ habe ich ebenfalls erstellt. Nun fehlt mir, diese Speise-Kategorien so wie die gewöhnlichen Blogpost-Kategorien in der Seitenleiste anzeigen lassen zu können.

taxonomy-list

taxonomy-list

Die Lösung

Der Ansatz mit get_category() arbeiten zu wollen geht schief, denn sie bezieht sich nur auf normale Blog-Post Kategorien. Die gesuchte Funktion heißt get_terms(). Ihr übergibt man den namen der gewünschten Taxonomie und ein (optionales) Array an Argumenten in denen z.B. Sortierreihenfolge, Hierarchie festgehalten wird. Die möglichen Einstellungsmerkmale sind am besten über den Codex-Eintrag nachzuschlagen. Hier sind auch noch andere Beispiele für die Ausgabe zu finden (Leider halt keines, was mir auf Anhieb gepasst hätte).

<?php
$args = array( 'hide_empty=1&hierarchical=1&pad_counts=1' );
$terms = get_terms( 'shiny_recipe_course', $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
$count = count( $terms );
$term_list = '<ul class="recipe-list">';
foreach ( $terms as $term ) {
$term_list .= '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'Alle %s -Rezepte', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</a> (' . $term->count . ')</li>';
}
$term_list .= '</ul>';
echo $term_list;
}
?>
Um jetzt alle einzelnen Terms auszugeben, itteriert man, wie zu sehen, mit einer foreach($terms as $term) Schleife über die Kategorien und hängt den gewünschten Inhalt an die Variable $term_list. Innerhalb der Schleife kann man dann selbst definieren, wie die einzelne Kategorie behandelt und ausgegeben werden soll. In meinem Fall wollte ich die Kategorie als unsortierte Liste von Kategorie-Links und mit zugehörigen Beitrags-Anzahl angezeigt bekommen.
Doch gerade die Beitrags-Anzahl war etwas schwieriger zu finden. Auf $term->count hätte ich fast noch selbst kommen können, aber es steht halt nirgends im Codex-Eintrag erläutert. Am Ende wird mit echo $term_list der zusammengesetzte String einfach ausgegeben.

Vielleicht hilft es euch weiter, es würde mich freuen 😉

Referenzen und Quellen

WordPress Codex – Funktions Referenz „get_terms()“