我有点困惑,为什么我不能在tax\\u查询中自动包含所有术语?
My code:
\'tax_query\' => array(
array(
\'taxonomy\' => \'city\',
\'field\' => \'slug\',
\'terms\' => array( nyc, boston, london ),
)
)
如果我有几十个城市呢?手动添加它们不是很酷吗?我有点困惑,为什么我不能在tax\\u查询中自动包含所有术语?
My code:
\'tax_query\' => array(
array(
\'taxonomy\' => \'city\',
\'field\' => \'slug\',
\'terms\' => array( nyc, boston, london ),
)
)
如果我有几十个城市呢?手动添加它们不是很酷吗?除非你有没有城市的帖子,否则你不就是在查询你所有的帖子吗?无论如何,埃里克·霍姆斯是正确的,你应该使用WP_Query
代替query_posts()
.
也就是说,您可以获得分类法中所有术语的列表,然后在税务查询中使用这些值。
// get all terms in the taxonomy
$terms = get_terms( \'city\' );
// convert array of term objects to array of term IDs
$term_ids = wp_list_pluck( $terms, \'term_id\' );
// proceed with tax query
$args = array (\'tax_query\' => array(
array(
\'taxonomy\' => \'city\',
\'field\' => \'term_id\',
\'terms\' => $term_ids,
)
)
);
$city_posts = new WP_Query( $args );
除了标记的“最佳答案”之外,还有一种可能更快的方法,因为我们不必先提取术语和名称。
这是通过使用一个不存在的操作符(没有“IN”、“NOT IN”、“AND”、“EXISTS”和“NOT EXISTS”)实现的。例如,字符串“XXX”执行此任务,并导致WP在查询生成期间不输入案例,因此也跳过了0=1连接。
(案例位于功能中get_sql_for_clause()
文件类wp tax查询的。php,其中允许的运算符是通过条件检查的,没有“else”。
$args = array (\'tax_query\' =>
array(
array(
\'taxonomy\' => \'city\',
//\'field\' => \'term_id\', // <-- not needed, default
//\'terms\' => $term_ids, // <-- not needed
\'operator\' => \'XXX\' // Use a non-existing operator
)
)
);
首先,不要使用query_posts
. 新建WP_Query
对象。
其次,如果你真的在添加所有类别,为什么你需要添加所有类别?这与获取所有帖子不一样吗?您还可以指定不包括哪些。即“除了芝加哥以外的一切”。
我想在搜索后的结果中使用两个循环。首先,如果有结果,我开始循环<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> 并在循环后显示属于某个类别的文章<?php $cats = get_categories(); foreach ($cats as $cat) { query_posts(\'cat=\'.$cat-&g