“ tax_query”参数不适用于WP_Query


17

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

<?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;
?>

如果使用“季节”术语之一的帖子是最新的,则查询按预期进行,但是如果使用“奖金”的帖子是最新的,则它将加载该查询。换句话说,我的“ tax_query”参数似乎对查询没有影响。我是否无法正确格式化“ tax_query”或缺少其他内容?

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

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

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

Answers:


42

所述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'
    )
),

1
谢谢Chip。我很好奇Wordpress为何采用这种方式构建它的原因?
Josh Farneman'4

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

1
对我来说就像一个魅力!谢谢男人,我在这头上撞墙了!
查尔斯·布莱克威尔,2014年

我似乎无法弄清楚如何将其转换为url参数并使WP_Query实际使用它。它只是不断被忽略。
realgeek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.