我将向您展示如何在WordPress中显示类别列表,以及如何标记活动类别,请参见下面的代码:
<?php
// Get the current queried object
$term = get_queried_object();
$term_id = ( isset( $term->term_id ) ) ? (int) $term->term_id : 0;
$categories = get_categories( array(
\'taxonomy\' => \'category\', // Taxonomy to retrieve terms for. We want \'category\'. Note that this parameter is default to \'category\', so you can omit it
\'orderby\' => \'name\',
\'parent\' => 0,
\'hide_empty\' => 0, // change to 1 to hide categores not having a single post
) );
?>
<ul>
<?php
foreach ( $categories as $category )
{
$cat_ID = (int) $category->term_id;
$category_name = $category->name;
// When viewing a particular category, give it an [active] class
$cat_class = ( $cat_ID == $term_id ) ? \'active\' : \'not-active\';
// I don\'t like showing the [uncategoirzed] category
if ( strtolower( $category_name ) != \'uncategorized\' )
{
printf( \'%3$s\',
esc_attr( $cat_class ),
esc_url( get_category_link( $category->term_id ) ),
esc_html( $category->name )
);
}
}
?>
</ul>
关于上述代码的注释:
get_queried_object() 检索当前查询的对象。例如:
如果您在一篇文章中,它将返回post对象如果您在一个页面中,它将返回page对象如果您在存档页面中,它将返回post类型对象如果您在类别存档中,它将返回category对象如果您在作者存档中,它将返回author对象等,但在使用get_queried_object()
, 即使在is_post_type_archive() 是真的。查看更多信息。
另外,请注意get_queried_object()
是的包装器$wp_query->get_queried_object()
, 因此,它返回一个WP对象数据类型。
get\\u categories()
get_categories() 检索类别对象列表。当前仅接受一个参数-
$args
. $args参数指定应用于检索类别的参数列表。看见
get_terms() 其他选项。
然而,要获取特定帖子的类别,我编写了一个简单的函数:How to get list of categories for a post