WordPressカスタマイズ事例

meta_queryを使って、カスタムフィールドの条件で絞り込んだ記事一覧を取得する

たとえば、
・これから開催するセミナー
・現在セミナー参加の受付をおこなっているセミナー
上記を満たすセミナーだけトップページに表示したい、みたいな要望があったとして、それに該当するセミナー一覧を取得する方法をご紹介します。

まずカスタムフィールドにセミナー開催日(ここでは semi_date)とセミナー参加受付締切日(ここでは semi_deadline)を追加します。

そして、meta_query を使ってメタ情報(カスタムフィールド)の条件を設定して取得します。

// カスタム投稿名
$post_type = 'seminar';
$current_date = date_i18n( 'ymd' ); //今日の日付取得
$posts = get_posts( array(
'post_type' => $post_type,
'posts_per_page' => -1,
'meta_key' => 'semi_date', //セミナー開催日
'orderby' => 'meta_value',
'order'=> 'ASC', //昇順
'type' => 'DATE', //日付
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'semi_date', //セミナー開催日
'value' => $current_date,
'compare' => '>=', //セミナー開催日が今日よりあと
'type' => 'DATE' //日付の比較
),
array(
'key' => 'semi_deadline', //セミナー参加受付締切日
'value' => $current_date,
'compare' => '>=', //セミナー参加受付締切日が今日よりあと
'type' => 'DATE' //日付の比較
),
),
));

これで「これから開催する、かつ参加申し込みも受け付け中のセミナー」の記事一覧を取得できました。

あとはいつもどおり foreach なり while なりで一覧表示すれば完成です。


関連するWordPressカスタマイズ事例