Jak pobrać nazwę kategorii bez linku w WordPress? (get_the_category)
PL

Jak pobrać nazwę kategorii bez linku w WordPress? (get_the_category)

5.00 /5 - (33 głosów )
Spis treści

Standardowa funkcja WordPressa the_category() jest świetna, ale ma jedną wadę: zawsze generuje linki HTML (<a href="...">...</a>) do strony archiwum. Co zrobić, jeśli budujesz niestandardowy layout (np. kartę w portfolio lub slider), gdzie kategoria ma być tylko zwykłym tekstem, a nie klikalnym elementem?

Rozwiązaniem jest użycie funkcji get_the_category(), która zwraca tablicę obiektów, a nie gotowy kod HTML.

Kod (Snippet)

Oto gotowy fragment kodu, który możesz wkleić do swojego pliku single.php lub content.php:

<?php
// Pobierz wszystkie kategorie przypisane do bieżącego wpisu
$categories = get_the_category();

if ( ! empty( $categories ) ) {
    // Wyświetl nazwę pierwszej znalezionej kategorii
    echo esc_html( $categories[0]->name );
}
?>

Wyświetlanie listy kategorii po przecinku

Jeśli wpis ma wiele kategorii i chcesz je wylistować jako tekst rozdzielony przecinkami:

<?php
$categories = get_the_category();
$output     = array();

if ( ! empty( $categories ) ) {
    foreach ( $categories as $category ) {
        // Dodaj nazwę do tablicy
        $output[] = esc_html( $category->name );
    }
    // Połącz tablicę w string z separatorem
    echo implode( ', ', $output );
}
?>

Dlaczego get_the_category()?

Funkcja ta daje Ci dostęp do pełnego obiektu kategorii. Oprócz nazwy (->name), możesz wyciągnąć:

  • ->slug (przydatne do klas CSS, np. <span class="cat-<?php echo $cat->slug; ?>">)
  • ->term_id (ID kategorii)
  • ->description (opis kategorii)
  • ->count (liczba wpisów w tej kategorii)

Zastosowanie w praktyce

Częstym przypadkiem użycia (Use Case) jest stylowanie etykiet na kartach bloga.

// Wewnątrz pętli WordPress
$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; ?>

Dzięki temu, jeśli masz kategorię “News”, otrzymasz klasę .badge-news, którą łatwo pokolorujesz w CSS. To poziom kontroli, którego the_category() po prostu nie oferuje.