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.