2

假设我有这样的类别结构:

food        (id = 1)
  chicken   (id = 2)
  beef      (id = 3)

beverage     (id = 11)
  soft-drink (id = 12)
  juice      (id = 13)

branch
  ... // not important

我想显示来自foodand的所有帖子beverage,所以我这样做:

$args = array('category__in' => array(1, 11) );
get_posts( $args );

该代码不起作用,因为我只勾选子类别。

我当然可以,array(1, 2, 3, 11, 12, 13)但它不是 DRY。

有没有一种使用父类别 ID 获取所有帖子的好方法?

谢谢

[我的代码基于以下答案]

$args = array(
  'category' => implode(",", array(1, 11) )
);
get_posts( $args );
4

1 回答 1

4

您需要使用cat而不是category__incategory__in不会获得子类别。您可以在此处获取此信息:

检查这个:

使用类别 ID 显示具有该类别(以及该类别的任何子类别)的帖子:
$query = new WP_Query( 'cat=1,11' );

该代码带来了该类别的任何孩子,但这个:

使用类别 ID 显示具有此类别(不是该类别的子类别)的帖子:
$query = new WP_Query( 'category__in=1,11' );

仅从具有该 ID 的类别中获取帖子。

现在要将多个类别 ID 传递给 cat,如果您将 ID 作为数组,则可以使用php implode 函数构建一个字符串。

你也可以检查这个例子:

$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$sticky = get_option( 'sticky_posts' );
$args = array(
   'cat' => 1,
   'ignore_sticky_posts' => 1,
   'post__not_in' => $sticky,
   'paged' => $paged
);
$query = new WP_Query( $args );

我还没有测试过你是否可以传递一组猫 ID,'cat'=>array(1,11)但你可以测试它,看看它是否有效。

于 2013-10-09T08:37:29.163 回答