WordPress wp_query由meta_value命令以数字方式错误排序

时间:2016-06-21 21:14:25

标签: php wordpress

我正在开发一个简单的Web应用程序,它运行WordPress来存储和显示游戏的高分。分数在页面上显示为从最高到最低。一切似乎都很好,直到其中一个得分高于999,在这种情况下,它被放错了。

在我的应用程序中,分数在meta_value内保存为字符串。我正在查询帖子并根据此值对它们进行排序。

以下是我传递给wp_query的参数:

$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 个答案:

答案 0 :(得分:2)

您按字符串术语排序字段1000的字符串表示低于12。与排序单词相同时,ABBOTT将高于AA。

尝试

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