[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つの値で指定した範囲外 | 数値系・日時系 |