2012-12-28 130 views
3

我正在編輯使用自定義查詢中的自定義字段的現有Wordpress主題。我需要編輯查詢,以便結果由一個自定義字段過濾,並按第二個自定義字段排序。在Wordpress中,如何在查詢中有多個自定義字段時按自定義字段排序?

這是我迄今爲止嘗試:

<?php 
$query_args = array(); 
$query_args['post_type'] = 'woo_estate'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ), 
    array(
     'key' => 'price', 
     'type' => 'numeric', 
    ) 
); 
$query_args['orderby'] = 'price'; 
$query_args['order'] = 'ASC'; 

$query_args['posts_per_page'] = $woo_options['woo_more_entries']; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$query_args['paged'] = $paged; 

?> 
    <?php query_posts( $query_args); ?> 

的問題是,結果繼續由默認值(日期)由price自定義字段排序代替。

如何通過自定義價格字段來訂購此查詢?

回答

2

在這裏的文檔中挖掘了一下之後:http://codex.wordpress.org/Class_Reference/WP_Query我能夠想出完成我所需要的代碼。

$query_args = array(); 
$query_args['post_type'] = 'woo_estate'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ) 
); 

$query_args['meta_key'] = 'price'; 
$query_args['orderby'] = 'meta_value_num'; 
$query_args['order'] = 'DESC'; 

$query_args['posts_per_page'] = $woo_options['woo_more_entries']; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$query_args['paged'] = $paged; 

query_posts( $query_args) 
+0

+1很大貢獻 –

+0

+1,對於你自己通過挖掘文檔自己想出的問題,這個很好的答案。 –

2

要通過你有你的陣列中添加meta_keyorderbymeta_valuemeta_value_num數字,所以在這種情況下,它應該是meta_value_num,因爲它是一個數字的自定義字段順序。

$query_args['meta_key'] = 'price'; 
$query_args['orderby'] = 'meta_value_num'; 
$query_args['order'] = 'ASC'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ) 
); 
// ... 

Here is another answer,你也可以看看這個。