包括WordPress TAX_QUERY中的所有术语

时间:2014-03-17 作者:wp student

我有点困惑,为什么我不能在tax\\u查询中自动包含所有术语?

My code:

\'tax_query\' => array(
    array(
        \'taxonomy\' => \'city\',
        \'field\' => \'slug\',
        \'terms\' => array( nyc, boston, london ),
         )
)
如果我有几十个城市呢?手动添加它们不是很酷吗?

3 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

除非你有没有城市的帖子,否则你不就是在查询你所有的帖子吗?无论如何,埃里克·霍姆斯是正确的,你应该使用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 );

SO网友:Dr. Manuel Lamotte-Schubert

除了标记的“最佳答案”之外,还有一种可能更快的方法,因为我们不必先提取术语和名称。

这是通过使用一个不存在的操作符(没有“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
         )
     )
);

SO网友:Eric Holmes

首先,不要使用query_posts. 新建WP_Query 对象。

其次,如果你真的在添加所有类别,为什么你需要添加所有类别?这与获取所有帖子不一样吗?您还可以指定不包括哪些。即“除了芝加哥以外的一切”。

结束

相关推荐

Several loop in search result

我想在搜索后的结果中使用两个循环。首先,如果有结果,我开始循环<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> 并在循环后显示属于某个类别的文章<?php $cats = get_categories(); foreach ($cats as $cat) { query_posts(\'cat=\'.$cat-&g