假设我有类似的类别结构:
food (id = 1)
chicken (id = 2)
beef (id = 3)
beverage (id = 11)
soft-drink (id = 12)
juice (id = 13)
branch
... // not important
我想显示food
和beverage
的所有帖子,所以我这样做:
$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 );
答案 0 :(得分:4)
您需要使用cat
代替category__in
,category__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,但是你可以测试它并查看它是否有效。