哟,伙计们,我正在用这个方法写相关的帖子,我正在尝试获取所有在一个或多个分类中有一个或多个术语的帖子。下面是我的函数输出的示例:
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
我只需添加所有ID并删除分类规范,如下所示:
\'tax_query\' => array(
array(
\'field\' => \'term_taxonomy_id\',
\'terms\' => array(...all ids...)
)
)
而且很有效!这是一个快速的解决方案,尽管它适用于所有情况,因为我可以在生成查询参数的过程中选择所需的分类法并排除不需要的分类法,
我仍然想知道为什么它忽略了我的OR relation
首先?这是一个bug还是我根本不明白OR relation
是命中注定的吗?
谢谢peeps!