2014-04-08 84 views
1

即時有點卡在我的wp_query順序。WordPress的查詢 - 訂購meta_value_num和日期

我想首先由meta_value_num(此作品完美)對查詢進行排序,並按日期排序。但在我的查詢中,日期似乎與meta_value_num相比較佔優勢。

因此,它按日期排序我的所有帖子,然後apllys meta_num_value順序,而不是相反。

你有任何線索如何做到這一點?

$args = array(
    'post_type' => 'anbieter', 
    'showposts' => -1, 
    'order' => 'DESC', 
    'orderby' => 'meta_value_num date', 
    'meta_key' => 'rating' 
); 

我發現這麼多線程由兩個自定義字段順序,但不是「正常後場」和自定義字段進行排序。

關於,

回答

2

我剛纔發現了一個解決方案,這是這個。添加到您的functions.php:

function wdw_query_orderby_postmeta_date($orderby){ 
    $new_orderby = str_replace("wp_postmeta.meta_value", "STR_TO_DATE(wp_postmeta.meta_value, '%d-%m-%Y')", $orderby); 
    return $new_orderby; 
} 

然後用您的查詢做到這一點:

add_filter('posts_orderby', 'wdw_query_orderby_postmeta_date', 10, 1); 
$args = array(
    'post_type' => 'anbieter', 
    'showposts' => -1, 
    'order' => 'DESC', 
    'orderby' => 'meta_value', 
    'meta_key' => 'rating' 
); 
remove_filter('posts_orderby', 'wdw_query_orderby_postmeta_date', 10, 1); 
+0

太棒了!這對我有用!非常感謝danyo! :-) – Linucs