カスタムフィールドの検索は、基本は、meta_key、meta_value、compareを使いますが、データを保存する領域のmeta_valueは、何でも使えるように文字列データとして保存されています。
そのため、数値等を保存して、取り出すときにcompare比較で取得しようとすると、数字と文字列を比較するので、意図しない結果が返ってきます。
それを避けるために、DB側の値をcastして比較するための仕組みがあります。
typeです。
数字ならNUMERIC、文字ならCHARなどがあります。
これを指定することで条件が指定のタイプにCASTされ、正しい結果が返ってきます。
カスタムフィールドは、必ずtype指定しよう。
例:数値を比較して1000以上を取得してくる。
array( 'meta_query' => array( array( 'key'=>'score', 'value'=>1000, 'compare'=>'>', 'type'=>'NUMERIC' ) ) )