問題描述

我有一個名為’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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。