目录
首页 笔记 详情

WordPress获取文章分类标签:the_category和get_the_category


WordPress模板标签the_category用于在文章页或归档页的文章列表中输出当前文章所属分类,即使有多个分类也会一并输出。

the_category( string $separator = '', string $parents = '', int $post_id = false )

函数参数

$separator

字符串值,默认为空

默认以无序列表输出分类链接,当文章指定了多个分类时,提供一个字符用于分隔这些分类链接。

$parents

字符串值,默认为空

指定父分类的显示方式,可选值如下:

  • 空值:不输出父分类;
  • multiple:父分类和子分类都是单独的链接,但处于同一个li元素中;
  • single:不输出父分类链接,但父分类的名称会出现在子分类链接锚文本中;

$post_id

整数型,默认值:false

文章的ID,默认使用当前文章ID。

函数使用示例

用 > 分隔分类链接,并且输出父分类链接,非常适合用于制作面包屑导航:

<?php the_category( ' > ', 'multiple' ); ?>

扩展阅读

the_category()函数位于:wp-includes/category-template.php

WordPress模板标签get_the_category用于获取当前分类信息,包含分类ID、分类名称、分类别名、分类描述、父分类ID、分类下文章数量等。

get_the_category( int $id = false )

函数参数

$id

整数型,默认值:当前文章的ID

指定文章的ID,将返回该文章所属分类的信息。

函数返回值

Array (
    [0] => WP_Term Object
        (
            [term_id] => 7
            [name] => 互联网
            [slug] => internet
            [term_group] => 0
            [term_taxonomy_id] => 7
            [taxonomy] => category
            [description] => 聚焦互联网业界动态,关注互联网发展中的人和事,提供最新的互联网资讯,分享互联网知识和技术。
            [parent] => 0
            [count] => 38
            [filter] => raw
            [cat_ID] => 7
            [category_count] => 38
            [category_description] => 聚焦互联网业界动态,关注互联网发展中的人和事,提供最新的互联网资讯,分享互联网知识和技术。
            [cat_name] => 互联网
            [category_nicename] => internet
            [category_parent] => 0
        )
)

函数使用示例

<?php
	$categorys = get_the_category();
	foreach ($categorys as $category) {
		echo $category->name;
	}
?>

Show the First Category Name Only

$categories = get_the_category();
 
if ( ! empty( $categories ) ) {
    echo esc_html( $categories[0]->name );   
}

Make the first category link to the category page:

$categories = get_the_category();
if ( ! empty( $categories ) ) {
    echo '<a href="' . esc_url( get_category_link( $categories[0]->term_id ) ) . '">' . esc_html( $categories[0]->name ) . '</a>';
}

Get the post category if you have a custom post_type

<?php
/* FIRST
 * Note: This function only returns results from the default “category” taxonomy. For custom taxonomies use get_the_terms().
 */
$categories = get_the_terms( $post->ID, 'taxonomy' );
// now you can view your category in array:
// using var_dump( $categories );
// or you can take all with foreach:
foreach( $categories as $category ) {
    echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />';
}

Show All Categories as Links

$categories = get_the_category();
$separator = ' ';
$output = '';
if ( ! empty( $categories ) ) {
    foreach( $categories as $category ) {
        $output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" alt="' . esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
    }
    echo trim( $output, $separator );
}

Get the Post Categories From Outside the Loop

<?php
$post = get_post();
if ( $post ) {
    $categories = get_the_category( $post->ID );
    var_dump( $categories );
}

Display all categories with name and description

<div>
<?php 
    foreach((get_the_category()) as $category){
        echo $category->name."<br>";
        echo category_description($category);
        }
    ?>
</div>

 


写笔记

咨询

您的电子邮箱地址不会被公开。 必填项已用*标注