我有一个名为“ episode”的自定义帖子类型。附加到“情节”上的是我的自定义分类法,称为“ video_type”,其中包含两个术语:“奖金-足额”和“情节”; “情节”包含两个子术语“ season-1”和“ season-2”(将来会添加其他季节)。我只想获取“ episode”类型的最新帖子,但不包括“ bonus-footage”一词中的任何帖子。以下是我为此使用的代码:

<?php
$some_args = array(
    'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'bonus-footage',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'NOT IN'
     ),
    'posts_per_page' => 1,
    'post_type' => 'episode',
);

$s = new WP_Query( $some_args );

if ( $s->have_posts() ) : $s->the_post();
    // Do something with this post.
endif;
?>


如果“季节”术语之一中的帖子是最新的,则查询按预期工作,但是如果“ bonus-footage”中的帖子是最新的,然后加载该帖子。换句话说,我的“ tax_query”参数似乎对查询没有影响。我是否无法正确格式化“ tax_query”或缺少其他内容?

我也尝试过如下设置“ tax_query”:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
    'include_children' => true,
        'operator' => 'IN'
),


,但我仍然得到相同的结果。

#1 楼

tax_query参数是一个数组数组,而不仅仅是数组。

此:

'tax_query' => array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
),


应该是这样的:

'tax_query' => array(
    array(
        'taxonomy' => 'video_type',
        'terms' => 'episode',
        'field' => 'slug',
        'include_children' => true,
        'operator' => 'IN'
    )
),


评论


谢谢Chip。我很好奇Wordpress为何采用这种方式构建?

–乔什·法纳曼(Josh Farneman)
2012年4月16日的16:19

这样就可以使用布尔值执行多个税收查询。请参阅“多个分类法处理”部分下的链接的法典条目。

–芯片Bennett
2012年4月16日的16:21

对我来说就像一个魅力!谢谢男人,我在这头上撞墙了!

–查尔斯·布莱克威尔
2014年11月23日23:45

我似乎无法弄清楚如何将其转换为url参数并使WP_Query实际使用它。它只是不断被忽略。

– realgeek
18年4月12日在21:22

谢啦!!这真的对我有帮助!

–Lai32290
20-05-19在20:14