2011-03-22 61 views
2

我想訂購我的所有帖子與多個cutom字段(Wordpress 3)。 爲例,我有2定製情侶meta_key/meta_value:通過元鍵值的Wordpress查詢訂單帖子

" order_submenuexpositions/numeric " 
" display_submenuexpositions/boolean " 

我想這樣的,但結果它從 「order_submenuexpositions」 meta_key不是訂貨人的meta_value:

SELECT * FROM wp_posts 
LEFT JOIN wp_postmeta wpostmetaOrder ON (wp_posts.ID = wpostmetaOrder.post_id AND wpostmetaOrder.meta_key = 'order_submenuexpositions') 
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
LEFT JOIN wp_term_relationships wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
LEFT JOIN wp_term_taxonomy wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
WHERE wp_postmeta.meta_key = 'display_submenuexpositions' 
AND wp_postmeta.meta_value = 'true' 
AND wp_posts.post_status = 'publish' 
AND wp_posts.post_type = 'post' 
AND wp_term_taxonomy.taxonomy = 'category' 
ORDER BY wpostmetaOrder.meta_value ASC,wp_postmeta.meta_value ASC 

我該怎麼辦它呢?

謝謝!


OK解決了,這是因爲meta_value SQL字段類型是LONGTEXT我試圖訂購整數value..it的不work.you必須在一個整數轉換類型,像這樣:

SELECT * FROM wp_posts 
LEFT JOIN wp_postmeta wpostmetaOrder ON (wp_posts.ID = wpostmetaOrder.post_id AND wpostmetaOrder.meta_key = 'order_submenuexpositions') 
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
LEFT JOIN wp_term_relationships wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
LEFT JOIN wp_term_taxonomy wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
WHERE wp_postmeta.meta_key = 'display_submenuexpositions' 
    AND wp_postmeta.meta_value = 'true' 
    AND wp_posts.post_status = 'publish' 
    AND wp_posts.post_type = 'post' 
    AND wp_term_taxonomy.taxonomy = 'category' 
ORDER BY CAST(wpostmetaOrder.meta_value AS SIGNED) ASC,wp_postmeta.meta_value ASC` 

回答

1

實際上,您可以在不使用複雜SQL查詢的情況下做到這一點,以備將來參考。

下面是一個例子:

$args = array(
'posts_per_page' => 250, 
'post_type' => 'books', 
'meta_query' => array(

    array(
     'key' => 'author', 
     'value' => $author_name, 
     'compare' => '==' 
    ), 

    array(
     'key' => 'publisher_id', 
     'value' => $publisher_id, 
     'compare' => '!=', 
     'type' => 'NUMBER' 
    ) 
) 
); 

$the_query = new WP_Query($args); while ($the_query->have_posts()) : $the_query->the_post(); 

// LOOP GOES HERE 

endwhile; 

您可以添加「Meta_query」內其他陣列挖掘更深,你還可以瞭解不同類型的「比較」,並可在「類型」選項wordpress codex。

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters