Wordpress
バックエンド
サブループにカスタムフィールドの比較条件を加える
単体なら 'meta_key' => 'custom_key' でいいんだけどね。
複数条件あったりするともう使えないんでね。
概要
サブループ作るとき WP_Query でインスタンス吐くじゃないですか。
あれ投稿タイプとか日付とか昇順 / 降順細かく設定できるので大体それで事足りるんですが、カスタムフィールドに期限日入れるような投稿があって、その期限日が過ぎたか過ぎてないかで投稿を絞りたい、ということがあった時、条件指定の中での比較ってどうやるのか、ということです。
まあそんなこと滅多にないんですけど忘れそうなんで。
<?php
// 今日の日付を取得
$current_date = date('ymd');
// サブループの条件指定
$args = array(
'post_type' => 'custom_post', // 投稿タイプ
'posts_per_page' => 10, // 表示件数
'orderby' => 'date', // 表示順の基準
'order' => 'DESC', // 昇順・降順 (ASC / DESC)
// ここからカスタムフィールドの条件指定
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'deadline',
'value' => $current_date,
'compare' => '>=',
'type' => 'DATE'
),
array(
'key' => 'deadline',
'value' => "",
'compare' => '==',
)
)
);
?>
meta query を使う
カスタムフィールドの値を取得するには meta_query を使います。
その中で配列を組んで key にカスタムフィールド名を入れることで取得できます。
なお、compare で比較演算子を指定することで比較することができますが、取得される値が全て String 型になることに注意が必要です。日付型や数値型などを明示的に指定する必要があるときには type も指定が必要です。
こうすればサブループ内で比較して投稿の取捨選択ができます。
メインループは functions.php で似たようなことをするのですが、ちょっと書き方があるので後日。