如前所述,我可以通过自定义分类法选择帖子in the codex. 但我不确定,如果我只想获得与自定义分类法没有任何关系的帖子,我必须如何设置tax\\u查询。有什么建议吗?
选择在自定义分类中没有关系的帖子
2 个回复
最合适的回答,由SO网友:Paflow 整理而成
对于那些通过谷歌登陆这里的人,我自己找到了一个答案:
$taxq = array(
array(
\'taxonomy\' => \'story_lng\',
\'field\' => \'id\',
\'operator\' => \'NOT EXISTS\',
)
);
这导致AND (NOT EXISTS( SELECT
1
FROM
wp_term_relationships
INNER JOIN
wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
WHERE
wp_term_taxonomy.taxonomy = \'story_lng\'
AND wp_term_relationships.object_id = wp_posts.ID))
AND wp_posts.post_type = \'story\'
AND (wp_posts.post_status = \'publish\'
OR wp_posts.post_author = 1
AND wp_posts.post_status = \'private\')
wich与Pieter Goosen建议的基本相同,但合并到一个查询中(代码行更少)。SO网友:Pieter Goosen
唯一的方法是获取所有条款并排除属于这些条款的帖子
$taxonomy = \'my_tax\';
$terms = get_terms(
$taxonomy,
[\'fields\' => \'ids\'] // Get only IDS
);
// Setup your query args
$args = [
\'tax_query\' => [
[
\'taxonomy\' => $taxonomy,
\'terms\' => $terms,
\'operator\' => \'NOT IN\' // Skip posts belonging to the passed terms
]
],
// any other args
];
$q = new WP_Query( $args );
您需要确保您实际上有术语,而不是空数组或WP_Error
对象,因为这可能导致意外输出