MySql只获得wordpress查询的不同结果

时间:2013-04-09 12:49:04

标签: mysql group-by wpdb

我想从Wordpress DB中选择内容来填充< select>所有不同的类别,但它可能,2个以上的帖子具有相同的类别,在这种情况下,我应该只显示此类别一次。

一个例子:

Post1 cat = EN
Post2 cat = EN
Post3 cat = DE
Post4 cat = FR
Post5 cat = FR

// The Result sould look like this:
EN
DE
FR

这是代码的当前状态:(但它很好用)

 <select name="sprache">
        <option value="0">Alle Sprachen</option>
        <?php

        $selectsql = " 
            SELECT  
            wpos ts.*,
            wterms.*

            FROM $wpdb->posts wposts
                    INNER JOIN $wpdb->term_relationships AS tr ON (wposts.ID = tr.object_id)
                    INNER JOIN $wpdb->term_taxonomy AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
                    INNER JOIN $wpdb->terms wterms ON (tt.term_id = wterms.term_id)
                    INNER JOIN $wpdb->postmeta wpostmeta ON (wposts.ID = wpostmeta.post_id)

            WHERE wposts.post_status = 'publish'
            AND tt.taxonomy = 'th5'
            AND wpostmeta.meta_key= '_sprachgruppen'

            GROUP BY tt.taxonomy 
            ";

 $select_output = $wpdb->get_results($selectsql,OBJECT);

 if ($select_output){ 
    foreach ($select_output as $post){
        setup_postdata($post);

   if(isset($_POST[gruppe])){
        $option .= '<option value="'.$post->term_id.'"';
        $option .= ' >';
        $option .= $post->name;
        $option .= '</option>';

   }
 echo $option;

1 个答案:

答案 0 :(得分:0)

在这里,您可以找到一个post_type

的类别列表
 SELECT `name` FROM`wp_terms` WHERE `term_id` IN (
 SELECT term_id FROM `wp_term_taxonomy` WHERE `term_taxonomy_id` IN 
 (SELECT `term_taxonomy_id` FROM `wp_term_relationships` WHERE `object_id` IN 
 (SELECT ID FROM `wp_posts` WHERE post_type='your custom post type') AND `object_id` IN
 (SELECT post_id FROM `wp_postmeta` WHERE meta_key='_sprachgruppe')
 )
 )

如果知道确切的term_taxonomy name

,将会更容易