Beim Erstellen benutzerdefinierter WordPress-Themes müssen Sie oft nicht nur die aktuelle Kategorie anzeigen, sondern auch ihre übergeordnete Kategorie (für Breadcrumb-Navigation oder hierarchische Menüs).
WordPress speichert Kategorien in einer hierarchischen Struktur, aber get_the_category() gibt ein flaches Array zurück. So extrahieren Sie die Hierarchie.
Methode: get_the_category() + Parent-Prüfung
Hier ist eine fertige Funktion, die Sie in functions.php einfügen können:
function wppoland_get_category_hierarchy() {
$categories = get_the_category();
if ( empty( $categories ) ) {
return false;
}
// Erste Kategorie abrufen
$category = $categories[0];
$output = '';
// Wenn Kategorie einen Parent hat
if ( $category->parent ) {
$parent = get_category( $category->parent );
$output .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '">' . esc_html( $parent->name ) . '</a> » ';
}
// Aktuelle Kategorie
$output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>';
return $output;
}
Verwendung im Template
<?php
$hierarchy = wppoland_get_category_hierarchy();
if ( $hierarchy ) {
echo '<div class="category-breadcrumb">' . $hierarchy . '</div>';
}
?>
Dies gibt etwas wie aus: Technologie » WordPress
Alternative: Vollständiger Breadcrumb-Pfad
Wenn Sie die vollständige Hierarchie benötigen (Großeltern, Eltern, Kind), verwenden Sie diesen rekursiven Ansatz:
function wppoland_get_full_category_trail( $category_id ) {
$trail = array();
while ( $category_id ) {
$category = get_category( $category_id );
array_unshift( $trail, $category );
$category_id = $category->parent;
}
$output = '';
foreach ( $trail as $cat ) {
$output .= '<a href="' . esc_url( get_category_link( $cat->term_id ) ) . '">' . esc_html( $cat->name ) . '</a> » ';
}
return rtrim( $output, ' » ' );
}
Diese Lösung ist sauber, effizient und behandelt mehrstufige Kategoriehierarchien ordnungsgemäß.


