カスタムフィールドの数値をtypeでcastして検索

2018年4月27日

当サイトはアフィリエイト広告を利用しています。

カスタムフィールドの検索は、基本は、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'
   )
  )
)

参考:WP_Meta_Query

-ワードプレス
-,