2016-06-21 49 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