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