【问题标题】:Wordpress - get all posts from multiple parent categories?Wordpress - 从多个父类别中获取所有帖子?
【发布时间】:2013-10-09 08:23:21
【问题描述】:

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

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),但它不是 DRY。

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

谢谢

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

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

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您需要使用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 数组,但你可以测试一下,看看它是否有效。

    【讨论】:

    • 非常感谢,我一直认为查询接受数组格式的id。它实际上只是一个逗号分隔的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多