“TAX_QUERY”参数不适用于WP_QUERY

时间:2012-04-16 作者:Josh Farneman

我有一个自定义的帖子类型,叫做“插曲”。“插曲”附带了一个名为“video\\u type”的自定义分类法,其中包含两个术语:“奖励片段”和“插曲”;“插曲”包含两个子术语“第1季”和“第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\\u query”参数似乎对查询没有影响。我是否没有正确设置“tax\\u query”的格式,或者我是否遗漏了其他内容?

我还尝试设置“tax\\u query”,如下所示:

\'tax_query\' => array(
        \'taxonomy\' => \'video_type\',
        \'terms\' => \'episode\',
        \'field\' => \'slug\',
    \'include_children\' => true,
        \'operator\' => \'IN\'
),
但我还是得到了同样的结果。

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

这个tax_query parameter is an array of arrays, 不仅仅是一个数组。

这是:

\'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\'
    )
),

SO网友:Lucas Bustamante

如果规则格式正确,也值得注意:

new WP_Query([
    \'post_type\' => \'vehicle\',
    \'tax_query\' => [
        \'relation\' => \'OR\',
        [
            \'taxonomy\' => \'brand\',
            \'field\' => \'slug\',
            \'terms\' => \'bmw\',
        ],
        [
            \'taxonomy\' => \'brand\',
            \'field\' => \'slug\',
            \'terms\' => \'mercedes\',
        ]
    ],
]);
这样,您就可以获取具有品牌的车辆bmwmercedes.

如果您想获取具有品牌的车辆bmwmercedes:

new WP_Query([
    \'post_type\' => \'vehicle\',
    \'tax_query\' => [
        [
            \'taxonomy\' => \'brand\',
            \'field\' => \'slug\',
            \'terms\' => [\'bmw\', \'mercedes\'],
        ],
    ],
]);

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post