Kolejny odcinek z serii functions.php. Piszemy funkcję, która pozwala wyświetlić nam kategorie danego posta. Do dzieła.

Rzecz pierwsza – bierzemy kategorie danego posta (tylko te, które są top-level, czyli nie mają rodzica):

function grab_categories(){
    $post_categories = wp_get_post_categories( get_the_ID(), array( 'fields' => 'all', 'parent' => 0 ) );
    return $post_categories;
   }

Funkcja get_the_ID() zwraca ID danego posta. Parent ustawione na 0 oznacza, że tylko kategorie najwyższego rzędu będą zaciągane. Pobieraniem kategorii zajmuje się wp_get_post_categories().

Wszystko ładnie zwracamy. Teraz pora wyświetlić:

 function display_categories($cats){
        $html = "<ul>";
        foreach($cats as $cat) {
            $html .= "<li>";
            $html .= '<a href="';
            $html .= esc_url(get_category_link($cat));
            $html .= '">';
            $html .= esc_html(wp_trim_words($cat->name, 1, "..."));
            $html .= "</a>";
            $html .= "</li>";
        }
        $html .= "</ul>";
        return $html;
   }

Używając funkcji zabezpieczających wyświetlamy kategorie w formie listy z linkami. Jeżeli nazwa kategorii jest dłuższa niż 1 wyraz, trimujemy.

Teraz fasada:

function cats_facade(){
    $cats = grab_categories();
    echo display_categories($cats);
}

Gotowe.