我认为这个问题会引起误解。你说:
我想检索所有具有自定义分类法“taxonomy-1”和“taxonomy-2”的帖子
但是
你想要有both taxonomy-1和taxonomy-2以及taxonomy-3是Irrivent吗?
$args = array(
\'post_type\' => \'post-type-x\',
\'tax_query\' => array(
\'relation\' => \'AND\',
array(
\'taxonomy\' => \'taxonomy-1\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-1\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
),
array(
\'taxonomy\' => \'taxonomy-2\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-2\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
)
)
);
或
你想要有both 分类法-1和分类法-2,但not 分类-3?
$args = array(
\'post_type\' => \'post-type-x\',
\'tax_query\' => array(
\'relation\' => \'AND\',
array(
\'taxonomy\' => \'taxonomy-1\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-1\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
),
array(
\'taxonomy\' => \'taxonomy-2\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-2\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
),
array(
\'taxonomy\' => \'taxonomy-3\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-3\', array(\'fields\' => \'ids\', \'hide_empty\' => false) ),
\'operator\' => \'NOT IN\'
)
)
);
或
是否要包含分类-1的帖子or 分类学-2和分类学-3是Irrievant吗?
$args = array(
\'post_type\' => \'post-type-x\',
\'tax_query\' => array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'taxonomy-1\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-1\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
),
array(
\'taxonomy\' => \'taxonomy-2\',
\'field\' => \'id\',
\'terms\' => get_terms( \'taxonomy-2\', array(\'fields\' => \'ids\', \'hide_empty\' => false) )
)
)
);
请注意,这些类型的查询的性能很差,因为
get_terms
运行一个db查询,这样使用上面的代码就会有几个查询减慢页面视图的速度。
如果在包含此代码的文件中,您可以访问一些包含分类术语id(或slug)数组的变量,那么您可以使用它们并提高性能。
另一种方法是使用创建自定义db查询$wpdb->get_results
使用适当的SQL查询。