$leaderQuery->the_post()
应仅在循环开始后调用一次:
while ( $leaderQuery->have_posts() ) {
$leaderQuery->the_post(); // call it just once
...
}
我还可以看到,您没有在循环中正确检索当前帖子的ID,因此正确的方法是使用
get_the_ID()
.
$postCategories = get_the_category( get_the_ID() ); // like this
$postCategories = get_the_category($leaderQuery->the_post()); // not this
但在一个循环中,您只需调用
get_the_category()
这样,即没有任何参数。
请注意get_the_category()
返回一个术语对象数组,因此如果只想获取该数组中第一个类别的名称,则可以执行以下操作:
// Get all categories (term objects) assigned to the current post.
$postCategories = get_the_category();
// Get the first category\'s name.
$first_cat_name = ( ! empty( $postCategories ) ) ? $postCategories[0]->name : \'\';
但是如果您想显示所有类别,那么您可以简单地使用
the_category()
.
请注意,对于自定义分类法,您将:
使用get_the_terms()
而不是get_the_category()
.
使用the_terms()
而不是the_category()
.
实际上,在WP查询的参数中cat_slug
不是有效的parameter for WP_Query
. 相反,它应该是category_name
, 但请记住,它期望的是一个slug,而不是类别名称,例如。my-category
而不是My Category
.
此外,仅当当前帖子属于某个类别时,才可以使用类似so的方式显示该类别的名称:
if ( in_category( \'Leadership\' ) ) {
echo \'In the Leadership category\';
}
// Or after closing the PHP tag ( ?> ):
//<?php echo in_category( \'Leadership\' ) ? \'In the Leadership category\' : \'\'; ?>