[WordPress]カスタムフィールドの値で記事一覧を取得
カスタムフィールドの値で記事一覧を取得する場合はWP_Queryに渡すクエリにmeta_queryの内容を記述することで取得することができる
$args = Array( 'post_type' => 'POST', 'cat' => 123,/* カテゴリIDEALLY */ 'paged' => get_query_var( 'paged' ),/* ページネーションする場合は必須 */ 'meta_query' => array( 'key' => 'maker', 'value' => 'Sony', 'compare' => 'LIKE', 'orderby' => 'maker', 'order' => 'DESC' );, ); $wp_query = new WP_Query( $args ); while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
例はmakerという項目にSonyという文字が含まれている場合の記事一覧を表示させている。
meta_query' => array( array( 'key'=>'wakeup__at', 'value'=>array( '05:00:00', '07:00:00' ), 'compare'=>'BETWEEN', 'type'=>'TIME' ) )
5:00:00から07:00:00の時間の間で検索する場合、TypeはTimeにする必要がある
データのタイプは以下の通り
データ型 | 意味 |
---|---|
‘CHAR’ | 文字 |
‘NUMERIC’ | ‘SIGNED’の別名 |
‘DECIMAL’ | 浮動小数点数 |
‘SIGNED’ | 整数(符号あり) |
‘UNSIGNED’ | 整数(符号なし) |
‘DATE’ | 日付 |
‘DATETIME’ | 日時 |
‘TIME’ | 時刻 |
‘BINARY’ | バイナリー |
compareの種類は以下の通り
データ型 | 意味 | 有効なデータ型 |
---|---|---|
‘=’ | 値と一致する | すべて(省略時) |
‘!=’ | 値と一致しない | すべて |
‘>’ | 値より大きい | 数値系・日時系 |
‘>=’ | 値以上 | 数値系・日時系 |
‘<‘ | 値より小さい | 数値系・日時系 |
‘<=’ | 値以下 | 数値系・日時系 |
‘LIKE’ | 値で指定した文字列に一致する | ‘CHAR’ |
‘NOT LIKE’ | 値で指定した文字列に一致しない | ‘CHAR’ |
‘IN’ | 値(配列)で指定した何れかに一致する | すべて |
‘NOT IN’ | 値(配列)で指定した何れにも一致しない | すべて |
‘BETWEEN’ | 2つの値で指定した範囲内(境界を含む) | 数値系・日時系 |
‘NOT BETWEEN’ | 2つの値で指定した範囲外 | 数値系・日時系 |