has_category()
仅告诉您特定帖子是否有给定类别(或任何类别,如果没有提供)。通过将post ID作为第二个参数传递,可以告诉它要检查哪个post。但是,当在循环中使用时,可以省略post ID,它将检查当前post。
问题是,如果在循环外使用,那么“当前帖子”很可能是循环中的第一篇或最后一篇帖子。或者,如果页面上有二次循环,则可能完全是其他内容。
如果您位于一个归档页面上,该页面列出了多篇具有不同类别的帖子,并且您想检查其中是否有特定类别的帖子,那么您需要循环浏览这些帖子并检查:
$has_category = false;
while ( have_posts() ) : the_post();
if ( has_category( \'category\' ) ) {
$has_category = true;
}
endif;
if ( $has_category ) {
// At least one post has the category.
}