Standard WordPress-funksjonen the_category() er flott, men den har en ulempe: den genererer alltid HTML-lenker (<a href="...">...</a>) til arkivsiden. Hva om du bygger et egendefinert oppsett (som et porteføljekort eller slider) der kategorien bare skal være ren tekst, ikke et klikkbart element?
Løsningen er å bruke get_the_category(), som returnerer en array av objekter i stedet for ferdig HTML.
Kode (snippet)
Her er et klart-til-bruk snippet du kan lime inn i single.php eller content.php:
<?php
// Hent alle kategorier tilordnet gjeldende innlegg
$categories = get_the_category();
if ( ! empty( $categories ) ) {
// Vis navnet på den første kategorien funnet
echo esc_html( $categories[0]->name );
}
?>
Vise kommaseparert liste
Hvis innlegget ditt har flere kategorier og du vil liste dem som kommaseparert tekst:
<?php
$categories = get_the_category();
$output = array();
if ( ! empty( $categories ) ) {
foreach ( $categories as $category ) {
// Legg til navn i arrayen
$output[] = esc_html( $category->name );
}
// Slå sammen arrayen til en streng med separator
echo implode( ', ', $output );
}
?>
Hvorfor get_the_category()?
Denne funksjonen gir deg tilgang til det komplette kategoriobjektet. I tillegg til navnet (->name) kan du hente ut:
->slug(nyttig for CSS-klasser, f.eks.<span class="cat-<?php echo $cat->slug; ?>">)->term_id(kategori-ID)->description(kategoribeskrivelse)->count(antall innlegg i denne kategorien)
Praktisk bruk
Et vanlig brukstilfelle er styling av etiketter på bloggkort.
// Inne i WordPress-loopen
$cats = get_the_category();
$first_cat = !empty($cats) ? $cats[0] : null;
if ($first_cat) : ?>
<span class="badge badge-<?php echo esc_attr($first_cat->slug); ?>">
<?php echo esc_html($first_cat->name); ?>
</span>
<?php endif; ?>
På denne måten, hvis du har kategorien “Nyheter”, får du klassen .badge-nyheter, som du enkelt kan farge i CSS. Dette kontrollnivået er noe the_category() rett og slett ikke tilbyr.



