2012-02-23 78 views
1

因此,這裏是我的查詢:WordPress的查詢由多個metaboxes和按日期

$args = array( 
    'post_type' => 'Event', 
    'posts_per_page' => 1000, 
    'meta_key' => 'event_informations_show_on_the_homepage', 
    'meta_value' => 'Show on the homepage', 
    'meta_compare' => '==', 
    'meta_key' => 'event_informations_date', 
    'orderby' => 'meta_value_num', 
    'order' => 'ASC' 
); 

$loop = new WP_Query($args); 

我想選擇有metabox event_informations_show_on_the_homepage和日期metabox中的metabox event_informations_show_on_the_homepage和秩序的價值的所有帖子這作爲時間戳存儲並被稱爲event_informations_date

我在做什麼錯?

+0

您將要覆蓋在'$ args'陣列的關鍵'meta_key'。 – hakre 2012-02-23 18:01:46

+0

但是我需要兩個meta_keys,我應該怎麼做? – Uffo 2012-02-23 18:11:30

+0

你不容易。您需要爲您的用例擴展['WP_Query'](http://codex.wordpress.org/Class_Reference/WP_Query)或[過濾它](http://codex.wordpress.org/Plugin_API/ Filter_Reference/posts_orderby)(或兩者)。甚至可以直接查詢數據庫,查看['wpdb'](http://codex.wordpress.org/Class_Reference/wpdb)。 – hakre 2012-02-23 18:15:41

回答

2

希望我不會在這裏吠叫錯誤的樹。

您可以使用密鑰「meta_query」,以濾除多個Meta鍵柱像這樣:

$args = array(
'post_type' => 'Event', 
    'posts_per_page' => 1000, 
    'orderby' => 'meta_value_num', 
    'order' => 'ASC', 
    'meta_query' => array(
       'relation' => 'OR', 
     array(
       'key' => 'event_informations_show_on_the_homepage', 
       'value' => 'yes', 
     ), 
     array(
       'key' => 'event_informations_date', 
       'value' => 'yes', 
     ) 
    ) 
); 
$query = new WP_Query($args); 

什麼WordPress是這裏做的是通過使用相同的innerjoins創建針對同一列中的多個何在表,每次使用不同的別名。這很酷,&可能是最快的方式來查詢。

欲瞭解更多信息,請瀏覽:http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

希望這有助於:)

+0

你不是在吠叫錯誤的樹 - 'meta_query'是要走的路。 +1。 – vzwick 2012-02-23 23:44:01

+0

如果你有'orderby meta_value_num',我相信你也需要在那裏有一個'meta_key = keyname'。 – Dan 2013-01-16 20:10:41