用于自定义分类的‘CATEGORY__AND’?

时间:2013-08-16 作者:Omar Tariq

我有一个自定义的post类型“post-type-x”和三个自定义的分类法,它们随附“taxonomy-1”、“taxonomy-2”和“taxonomy-3”。

我想检索所有具有自定义分类法“taxonomy-1”和“taxonomy-2”的帖子。

我将在query\\u posts函数中传递的参数数组是什么?

$args = array ( ..?.. )

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

我认为这个问题会引起误解。你说:

我想检索所有具有自定义分类法“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查询。

结束

相关推荐

Problems with loop

我的索引中有这个循环。php: <?php if (have_posts()) : while (have_posts()) : get_template_part( \'post\' ); endwhile; endif; ?> 调用此模板<?php ?> <h2 id=\"post-<?php the_ID()