Når du bygger egendefinerte WordPress-temaer, trenger du ofte å vise ikke bare den gjeldende kategorien, men også dens overordnede kategori (for brødsmulenavigasjon eller hierarkiske menyer).
WordPress lagrer kategorier i en hierarkisk struktur, men get_the_category() returnerer en flat array. Slik trekker du ut hierarkiet.
Metode: Get_the_category() + overordnet sjekk
Her er en ferdig funksjon du kan lime inn i functions.php:
function wppoland_get_category_hierarchy() {
$categories = get_the_category();
if ( empty( $categories ) ) {
return false;
}
// Hent den første kategorien
$category = $categories[0];
$output = '';
// Hvis kategorien har en overordnet
if ( $category->parent ) {
$parent = get_category( $category->parent );
$output .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '">' . esc_html( $parent->name ) . '</a> » ';
}
// Gjeldende kategori
$output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>';
return $output;
}
Bruk i mal
<?php
$hierarchy = wppoland_get_category_hierarchy();
if ( $hierarchy ) {
echo '<div class="category-breadcrumb">' . $hierarchy . '</div>';
}
?>
Dette vil gi ut noe som: Teknologi » WordPress
Alternativ: Full brødsmulessti
Hvis du trenger hele hierarkiet (besteforelder, forelder, barn), bruk denne rekursive tilnærmingen:
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, ' » ' );
}
Denne løsningen er ren, effektiv og håndterer flernivå kategorihierarkier riktig.

