2016-06-21 6 views
0

私はワードプレスを使い、ゲームの高い得点を表示して表示する単純なウェブアプリケーションを開発しています。スコアは、ページの最高から最低まで表示されます。スコアのいずれかが999を超えるまで、すべてがうまくいくように見えますが、その場合は間違った順序で配置されます。WordPress wp_query order by meta_value数値の順序が正しくない

私のアプリケーションでは、得点はmeta_valueの文字列で保存されます。私は投稿を照会しており、この値に基づいて投稿を注文しています。ここで

は、私がwp_queryに渡してい引数です:

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

スコアは同様の方法で返されます。 1000123後に置かれることに注意してください:

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

関連する問題