Wordpress - 从多个父类别中获取所有帖子?

时间:2013-10-09 08:23:21

标签: wordpress

假设我有类似的类别结构:

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

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

branch
  ... // not important

我想显示foodbeverage的所有帖子,所以我这样做:

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

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

当然我可以做array(1, 2, 3, 11, 12, 13),但这不是干的。

使用父类别的ID 获取所有帖子是否有好方法?

由于

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

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

1 个答案:

答案 0 :(得分:4)

您需要使用cat代替category__incategory__in不会将类别设为子级。您可以获得此信息here

检查一下:

  

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

该代码带来了该类别的所有孩子,但是:

  

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

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

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

您还可以查看此示例:

$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 );

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