[wordpress] カスタムフィールドを条件付きで検索する方法
meta_queryコマンドでカスタムフィールドを条件付きで検索できる
field1が1である記事を検索↓↓
query_posts( array( 'meta_query' => array( array( 'key'=>'field1', 'value'=>'1' ) ) ) );
項目を比較して抽出する場合は以下の通り、compareを使用する↓↓
query_posts( array( 'meta_query' => array( array( 'key'=>'address1', 'value'=>'東京都', 'compare'=>'=' ) ) ) );
compareで使用できる演算子は以下の通り
データ型 | 意味 | 有効なデータ型 |
---|---|---|
‘=’ | 値と一致する | すべて(省略時) |
‘!=’ | 値と一致しない | すべて |
‘>’ | 値より大きい | 数値系・日時系 |
‘>=’ | 値以上 | 数値系・日時系 |
‘<‘ | 値より小さい | 数値系・日時系 |
‘<=’ | 値以下 | 数値系・日時系 |
‘LIKE’ | 値で指定した文字列に一致する | ‘CHAR’ |
‘NOT LIKE’ | 値で指定した文字列に一致しない | ‘CHAR’ |
‘IN’ | 値(配列)で指定した何れかに一致する | すべて |
‘NOT IN’ | 値(配列)で指定した何れにも一致しない | すべて |
‘BETWEEN’ | 2つの値で指定した範囲内(境界を含む) | 数値系・日時系 |
‘NOT BETWEEN’ | 2つの値で指定した範囲外 | 数値系・日時系 |
複数の条件で抽出する方法は以下の通り、複数の条件を記述し最後に’relation’=>’OR’もしくは’relation’=>’AND’で結合する↓↓
省略した場合はANDで処理される
query_posts( array( 'meta_query' => array( array( 'key'=>'wakeup__at', 'value'=>array( '01:00:00', '03:00:00' ), 'compare'=>'BETWEEN', 'type'=>'TIME' ), array( 'key'=>'wakeup__at', 'value'=>array( '05:00:00', '07:00:00' ), 'compare'=>'BETWEEN', 'type'=>'TIME' ), 'relation'=>'OR' ) ) );