具有多个类别的WP查询--传递数组有效吗?

时间:2017-11-16 作者:Jordan Carter

根据codex,要查询可以属于任何类别集合的帖子,我们需要执行以下操作:

$query = new WP_Query( array( \'cat\' => \'2,6,17,38\' ) );

https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

然而,我有以下几点是可行的,我不知道为什么。

  $args = array(
    \'cat\' => $related_cat_ids,
    \'posts_per_page\' => -1,
  );
  $query = new WP_Query($args);
我之所以感到困惑,是因为$related\\u cat\\u id实际上是一个数组,但该示例清楚地显示了一组数字,用逗号分隔,表示“cat”值。

这是我应该担心的吗?在未来的WordPress发布中,我的代码会突然停止工作吗?对于我的案例来说,继续使用数组比将其格式化为字符串更方便。原因是我正在使用get_the_category() 动态获取类别,然后将ID从该数组推送到我的新数组中。

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

我理解你的困惑,但你没有什么可担心的,因为在场景背后,Wordpress采取了所有必要的步骤来实现它。

例如,从class-wp-query.php

// If querystring \'cat\' is an array, implode it.
if ( is_array( $q[\'cat\'] ) ) {
    $q[\'cat\'] = implode( \',\', $q[\'cat\'] );
}
正在检查是否为数组,并快速将结果转换为逗号分隔的字符串。

Another way will be using the other options like:

 category__and           An array of category IDs (AND in).
 category__in            An array of category IDs (OR in, no children).
 category__not_in        An array of category IDs (NOT in).
More on this in Category_Parameters

但我还是会坚持用你觉得更舒服的方式。

使用array() 如果您觉得它更有用,请格式化Wordpress 一个有趣且有用的工作工具。

SO网友:ghoul

是的,它会起作用的。该信息可能不会在食品法典中提供。但如果你看看代码here 关于参数,您会发现,即使传递了一个数组,它也会更改为字符串。

    // If querystring \'cat\' is an array, implode it.
    if ( is_array( $q[\'cat\'] ) ) {
        $q[\'cat\'] = implode( \',\', $q[\'cat\'] );
    }
所以你应该很安全。就我而言,字符串和数组都被接受为参数是一件好事,WordPress社区会照样做。

即使您仍有疑问,也可以始终在参数中使用category\\uu,该参数始终采用以下数组:

$args = array(
\'category__in\' => $related_cat_ids,
\'posts_per_page\' => -1,
);
$query = new WP_Query($args);

结束