问题描述

我有一个名为’episode’ 的自定义帖子类型。附有’episode’ 我有一个名为’video_type’ 的自定义分类,其中包含两个术语:”bonus-footage” 和”episode”; “episode” 包含两个子项”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;
?>

如果’season’ 条款之一的帖子是最新的,那么该查询将按预期方式工作,但如果”bonus-footage” 中的帖子是最新的,那么它将加载该帖子。换句话说,我的”tax_query” 参数似乎对查询没有影响。我不正确格式化”tax_query” 还是我还缺少别的东西?

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

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

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

最佳解决方案

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。