カスタムフィールドを使ってイベントカレンダーを作ってみたおはなし

要件

デイトピッカーで日付を選び、カテゴリを選択します。カテゴリを何も選ばなかったら「イベントなし」を表示されます。

カスタム投稿タイプ:
calendar(イベントカレンダー)
カスタムフィールド:
calendar_date1〜calendar_date10(デイトピッカー)
calendar_cate1〜calendar_cate10(チェックボックス。会議、セミナー、食事会、コンサート)
表示件数:
3ヶ月分

calendar01

<?php
	$newslist = new WP_Query( array(
		'post_type' => 'calendar',
		'posts_per_page' => 3
	));
	if($newslist->have_posts()):
	while($newslist->have_posts()):
	$newslist->the_post();
	?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
	<?php
	for ($i=1; $i<=10; $i++) {
		$date_fn = 'calendar_date'.$i;
		$get_date = get_field($date_fn);
		if($get_date):
			$date = date_create($get_date);
			
			$weeks = array("日", "月", "火", "水", "木", "金", "土");
			$w = (int)date_format($date, 'w');
			$week = $weeks[$w];
			
				echo '<th>';
				echo date_format($date,'m/d');
				echo '(<span class="';
				if($week == '土'){echo 'sat';}else{echo 'sun';}
				echo '">';
				echo $week;
				echo '</span>)</th>';
		endif;
	}
	?>
	</tr>
	<tr>
	<?php
		for ($i=1; $i<=10; $i++) {
			$date_fn = 'calendar_date'.$i;
			$get_date = get_field($date_fn);
			$time_fn = 'calendar_cate'.$i;
			$get_time = get_field_object($time_fn);
			$get_time_id = get_post_meta($post->ID,$time_fn);
			$get_time_id = $get_time_id[0];
			
			if($get_date):
				echo '<td>';
			if($get_time){
				foreach($get_time_id as $time_value){
					switch($time_value){
						case '会議':
							echo '<span class="meeting">';
							echo $time_value;
							echo '</span>';
							break;
						case 'セミナー':
							echo '<span class="seminar">';
							echo $time_value;
							echo '</span>';
							break;
						case '食事会':
							echo '<span class="dinner">';
							echo $time_value;
							echo '</span>';
							break;
						case 'コンサート':
							echo '<span class="concert">';
							echo $time_value;
							echo '</span>';
							break;
						default:
							break;
					}
				}
				if(!$get_time_id){
					echo 'イベントなし';
				}
			}
				echo '</td>';
			endif;
		}
	?>
	</tr>
</tbody>
</table>
<?php
	endwhile;
	endif;
	wp_reset_postdata();
?>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA