是否在索引上使用了HAS_CATEGORY并且其中一个被查询的帖子具有该类别?

时间:2019-06-11 作者:Michael Rogers

如果我使用has_category(\'dogs\') 在类似模板的索引上。php或归档。php或搜索。php和循环中显示的一个帖子都有分类狗,函数会返回true吗?

我知道它在单个帖子上有效,但我需要知道它在循环和任何帖子都有类别时是否也有效。

2 个回复
最合适的回答,由SO网友:Marc 整理而成

只要has_category 在循环中使用,则在index.php, archive.php, 等等。如果在这些模板的循环之外使用,则可能会遇到问题。

SO网友:Jacob Peattie

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.
}

相关推荐

Calculations in functions.php

我为自己创建了一个发票主题,并试图在自定义列中获取发票总额。我已经尝试调整模板页面中使用的代码,以便在函数中显示这一点。php文件,但它不工作。我的乘法操作数出现了一个操作数错误,我不知道为什么。这是我的代码(如有任何帮助,将不胜感激)。if( $column_name == \'invoice_total\' ) { $hours = 0; // This allows counting of each sub_field //* Set repeater va