Funkcja the_category() wyświetla nazwę kategorii jako link
the_category();
Jeśli wpis jest przypisany do kilku kategorii, wtedy zostaną wyświetlone obok siebie jako lista.

HTML wygląda następująco:
<ul class=”post-categories”>
<li><a href=”#” rel=”category tag”></a></li>
<li><a href=”#” rel=”category tag”></a></li>
<li><a href=”#” rel=”category tag”></a></li>
</ul>
Oddzielone kropką (•):
the_category( '•' );
Oddzielone przecinkiem:
the_category( ' , ' );

Jednak w tym przypadku linki są wyświetlane jako sam element <a>.
Funkcji można też użyć w zdaniu:
Ten artykuł jest przypisany do następujących kategorii: <?php the_category( ', ' ); ?>.

Wyświetlenie kategorii jako tekst
<?php
// Wyświetlenie kategorii jako tekst
foreach ( ( get_the_category() ) as $category ) {
echo $category->cat_name . ' ';
}
?>

Wyświetlenie kategorii jako tekst ze znakami interpunkcyjnymi
Powyższe metody wyświetlania kategorii wpisu mają jedną wadę. Nie ma kontroli nad separatorami na końcu ciągu. Dlatego na przykład nie da się oddzielić nazw kategorii przecinkiem i zdanie zakończyć kropką. Poniższa funkcja daje pełną kontrolę nad separatorami:
<?php
// Wyświetlenie kategorii jako tekst
$cat_before = ''; // użyj własny
$cat_separator = ','; // użyj własny
$cat_after = '.'; //użyj własny
$category_counter = count( get_the_terms( $post->ID, 'category' ) );
$i=0; // counter
foreach ( ( get_the_category() ) as $category ) {
$i = $i + 1;
while ( $i < $category_counter ) {
echo $cat_before . $category->cat_name . $cat_separator;
break;
}
}
echo $cat_before . $category->cat_name . $cat_after;
?>

Wykluczenie kategorii
Poniższa funkcja umożliwia wykluczenie kategorii za pomocą ID:
function exclude_post_categories($excl='', $spacer=' ') {
$categories = get_the_category(get_the_ID());
if (!empty($categories)) {
$exclude = $excl;
$exclude = explode(",", $exclude);
$thecount = count(get_the_category()) - count($exclude);
foreach ($categories as $cat) {
$html = '';
if (!in_array($cat->cat_ID, $exclude)) {
$html .= 'cat_name . '">' . $cat->cat_name . '';
if ($thecount > 0) {
$html .= $spacer;
}
$thecount--;
echo $html;
}
}
}
}
użycie:
<?php
exclude_post_categories("4,19");
?>
Funkcja wp_list_categories()
Również za pomocą tej funkcji można wyświetlić listę kategorii, ma ona jednak kilka wad.
- Wyświetla listę kategorii alfabetycznie według nazwy kategorii w porządku rosnącym
- Wyświetla listę jako <li><ul></ul>
- Nie wyklucza żadnej kategorii i obejmuje wszystkie kategorie
- Automatycznie pokazuje nazwę „Kategorie”

Aby wyświetlić kategorie postu w pętli:
<?php
$taxonomy = 'category';
// Get the term IDs assigned to post.
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
// Separator between links.
$separator = ', ';
if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) {
$term_ids = implode( ',' , $post_terms );
$terms = wp_list_categories( array(
'title_li' => '',
'style' => 'none',
'echo' => false,
'taxonomy' => $taxonomy,
'include' => $term_ids
) );
$terms = rtrim( trim( str_replace( '
', $separator, $terms ) ), $separator );
// Display post categories.
echo $terms;
}
?>
Aby posortować kategorie alfabetycznie i uwzględnić tylko kategorie o ID 16, 3, 9 i 5, można użyć następujący kod:
<ul>
<?php
wp_list_categories( array(
'orderby' => 'name',
'include' => array( 3, 5, 9, 16 )
) );
?>
Poniższy przykład wyświetla linki kategorii posortowane według nazwy, pokazuje liczbę postów dla każdej kategorii i wyklucza z listy kategorię o ID 10.
<?php
wp_list_categories( array(
'orderby' => 'name',
'show_count' => true,
'exclude' => array( 10 )
) );
?>
Aby wyświetlić kategorie należące do custom post types:
<?php $taxonomy = 'genre'; $orderby = 'name'; $show_count = false; $pad_counts = false; $hierarchical = true; $title = ''; $args = array( 'taxonomy' => $taxonomy, 'orderby' => $orderby, 'show_count' => $show_count, 'pad_counts' => $pad_counts, 'hierarchical' => $hierarchical, 'title_li' => $title ); ?> <?php wp_list_categories( $args ); ?>
