結構はまった内容なのでハックに残しておきます
wordpressでget_postsやwp_queryをする際の引数に以下のような、条件を追加するとします。
$args = array( 'post_type' => 'hoge', 'meta_query' => array( 'relation' => 'AND' //条件1 array( 'key' => 'lat', 'value' => array(35.1,36.1), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' ), //条件2 array( 'key' => 'lng', 'value' => array(135.11,135.12), 'type' => 'DECIMAL', 'compare' => 'BETWEEN’ ) ) );
以上の条件1と2は、うまく機能していません。
decimal型とnumeric型とは?
wordpressの関数でデータ型を指定するとき、数値関係では以下の種類があります。
type | role |
---|---|
‘DECIMAL’ | 浮動小数点数 |
‘SIGNED’or’NUMERIC’ | 整数(符号あり) |
‘UNSIGNED’ | 整数(符号なし) |
これより、条件1の方は’type’をNUMERICにしているので、’value’に入れる数値を整数値にする必要があります。
array( 'key' => 'lat', 'value' => array(35,36), 'type' => 'NUMERIC', 'compare' => 'BETWEEN' )
decimal型の指定方法について
decimalを指定するときは、ただ指定するだけではなく
DECIMAL(a,b) ・・・ a:数の最大桁数,b:小数点以下の最大桁数
以上のように指定しなければいけません。これより、条件2の方は、以下のようにオプションを指定しなければなりません。
array( 'key' => 'lng', 'value' => array(135.11,135.12), 'type' => 'DECIMAL(5,2)', 'compare' => 'BETWEEN' )