伙计们,我正在写相关的帖子方法,我试图得到所有的帖子,在一个或多个分类中有一个或多个术语。下面是我的函数输出的示例:
array(
'post_type' =>
array (
0 => string 'post',
1 => string 'event',
2 => string 'quiz',
3 => string 'newsletter'
),
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'tax1',
'field' => 'term_taxonomy_id',
'terms' => array(...some ids...)
),
array(
'taxonomy' => 'tax2',
'field' => 'term_taxonomy_id',
'terms' => array(...some ids...)
)
)
)生成的查询SQL提供了以下内容:
wp_term_relationships.term_taxonomy_id IN
(58,47,98,75,90,100,101,29,30,102,99,60,52,64,91,44,27)
AND tt1.term_taxonomy_id IN (5,14,18,22) )它给了我错误的结果,也就是唯一的左边和传球。
如果我将AND改为OR
wp_term_relationships.term_taxonomy_id IN
(58,47,98,75,90,100,101,29,30,102,99,60,52,64,91,44,27)
OR tt1.term_taxonomy_id IN (5,14,18,22) )它返回所需的结果!
有人知道我错过了什么吗?任何帮助都将不胜感激!我甚至更新了我的Wordpress的最新版本!
我想出了一个不完美的解决方案:
因为我使用的是term_taxonomy_id,所以我可以添加所有IDS并删除分类法规范,如下所示:
'tax_query' => array(
array(
'field' => 'term_taxonomy_id',
'terms' => array(...all ids...)
)
)而且起作用了!这是一个快速的解决方案,尽管它在所有情况下都能工作,因为我可以选择所需的分类法,并在生成查询ARGS的过程中排除不理想的分类,
我仍然想知道为什么它一开始就忽略了我的OR relation?这是一个bug,还是我根本不明白OR relation意味着什么?
谢谢偷窥!
发布于 2017-11-04 12:24:48
我想出了一个不完美的解决方案:
因为我使用的是term_taxonomy_id,所以我可以添加所有IDS并删除分类法规范,如下所示:
'tax_query' => array(
array(
'field' => 'term_taxonomy_id',
'terms' => array(...all ids...)
)
)而且起作用了!这是一个快速的解决方案,尽管它在所有情况下都能工作,因为我可以选择所需的分类法,并在生成查询ARGS的过程中排除不理想的分类,
我还是想知道为什么它一开始就忽视了我的关系?这是一个错误,还是我根本不明白什么或关系是意味着?
https://wordpress.stackexchange.com/questions/284076
复制相似问题