Using DISTINCT in wp_query

时间:2014-05-22 作者:marcelo2605

我需要创建一个系统,用户首先选择州,然后选择城市,然后查看该城市中商店的信息。

为此,我创建了一个名为store的cpt,其中包含两个元框:state和city。

对于第一个下拉列表,我使用带有以下参数的wp\\u查询:

$args = array(
    \'post_type\' => \'store\',
    \'posts_per_page\' => -1,
    \'meta_key\' => \'state\',
    \'orderby\' => \'meta_value\', 
    \'order\' => ASC,
);
但它会返回重复的状态,因为同一状态下有多个存储。

我如何解决这个问题?我曾想过使用mysql DISTINCT,但不知道这是否可行。

UPDATE

完整循环:

$args = array(
    \'post_type\' => \'store\',
    \'posts_per_page\' => -1,
    \'meta_key\' => \'state\',
    \'orderby\' => \'meta_value\', 
    \'order\' => ASC,
);

 function search_distinct() { return "DISTINCT"; }
 add_filter(\'posts_distinct\', \'search_distinct\');
 $the_query = new WP_Query( $args );

 if ( $the_query->have_posts() ) {
   echo \'<ul>\';
   while ( $the_query->have_posts() ) {
      $the_query->the_post();
      echo \'<li>\' . get_custom_field(\'estado\') . \'</li>\';
   }
   echo \'</ul>\';
 }
 wp_reset_postdata();
 remove_filter(\'posts_distinct\', \'search_distinct\');
但过滤器不起作用

2 个回复
SO网友:Pim

我自己也没有试过,但这听起来像是posts_distinctposts_groupby 过滤器:

function search_distinct() {
    return "DISTINCT";
}
add_filter(\'posts_distinct\', \'search_distinct\');

SO网友:Cyclonecode

我不确定这是实现这一目标的最佳方式,但您可以使用以下原始查询:

$states = $wpdb->get_results("SELECT DISTINCT meta_value 
                              FROM wp_postmeta 
                              WHERE meta_key = \'state\'
                              ORDER BY meta_value");
以上内容将返回一个唯一state 元数据值,然后可以使用以下内容在列表中显示:

if (count($states)) {
  print \'<ul>\';
  foreach ($states as $state) {
    print \'<li>\' . $state->meta_value . \'</li>\';
  }
  print \'</ul>\';
}

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post