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カスタマイズ事例