2016-06-21 48 views
0

我正在研究一個運行WordPress的簡單Web應用程序,用於存儲和顯示遊戲的高分。分數在頁面上從最高到最低顯示。一切似乎都很好,直到其中一個分數超過999,在這種情況下,它的排列順序是錯誤的。WordPress wp_query order by meta_value錯誤的數字順序

在我的申請分數保存爲一個字符串內meta_value。我正在查詢帖子並根據此值排序。

下面是我傳遞給wp_query的ARGS:

$args2 = array(
    'post_type' => 'scoreboard', 
    'orderby' => 'meta_value', 
    'meta_key' => 'score', 
    'order' => 'DESC', 
    'posts_per_page' => '-1', 
); 

分數會以類似的方式返回。需要注意的是1000放置123後:

777, 700, 601, 600, 567, 400, 123, 1000, 1 

有人能提供一個解釋,爲什麼這會發生?

+1

嘗試大衛答案。它的正確:) –

回答

2

您正在按照字符串術語排序字段1000的字符串表示形式低於12。與排序詞相同,ABBOTT將高於AA。

嘗試

$args2 = array(
    'post_type' => 'scoreboard', 
    'orderby' => 'meta_value_num', 
    'meta_key' => 'score', 
    'order' => 'DESC', 
    'posts_per_page' => '-1', 
); 
+0

啊哈!我應該知道這個。謝謝一堆! – mbacon40