问题描述
我有一个名为’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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。