Last active
August 29, 2015 13:56
-
-
Save marushu/8893684 to your computer and use it in GitHub Desktop.
ACF(Advanced Custom Fields)プラグインを使って、館内イベントのデータを取得、直近のイベント10分前からイベントを出力させる
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<section id="data_inner"> | |
<?php | |
// 緊急のお知らせ用カウンタ | |
$boxcounter = 0; | |
// サイトの「今日」の日付を取得 | |
$local_timestamp = current_time( 'timestamp' ); // ローカルのタイムスタンプ | |
$now = gmdate( 'H', $local_timestamp ); // ローカルの時刻文字列 | |
//echo "nowを出力" . $now; // 現在時刻の「時」を出力 | |
// 月間分の設定 | |
$select_kannai_monthly = get_field( 'select_kannai_monthly' ); | |
$today_day = gmdate( 'j', $local_timestamp ); // integer | |
// 今日の「日(数)」をゲット | |
$today_day = intval( $today_day - 1 ); | |
$select_kannai_event = $select_kannai_monthly[ $today_day ][ 'daily_event' ]; | |
if( $select_kannai_event ) { | |
switch( $select_kannai_event ) { | |
case $select_kannai_event == 'week_day' : | |
$post_type = 'event_weekday'; | |
break; | |
case $select_kannai_event == 'saturday' : | |
$post_type = 'saturday'; | |
break; | |
case $select_kannai_event == 'holiday' : | |
$post_type = 'event_holiday'; | |
break; | |
case $select_kannai_event == 'special' : | |
$post_type = 'event_special'; | |
break; | |
} | |
} | |
?> | |
<?php | |
$args = array( | |
'post_type' => $post_type, | |
'numberposts' => -1, | |
); | |
$kannai_events = get_posts( $args ); | |
foreach( $kannai_events as $each_kannai_event ) : | |
// 各イベントのdiv.each_creature_event に番号を付与するためのカウンタ | |
if( $each_kannai_event ) : | |
// 各イベントリスト用カウンタ | |
$counter = 0; | |
// サイトの「今日」の日付を取得 | |
$local_timestamp_now = current_time( 'timestamp' ); // ローカルのUnixタイムスタンプ | |
$now = gmdate( 'Y/m/d', $local_timestamp ); // ローカルの年月日 | |
// Unixタイム成形用の年月日 | |
$today_y = gmdate( 'Y', $local_timestamp ); | |
// Unixタイム成形用の年月日 | |
$today_m = gmdate( 'm', $local_timestamp ); | |
// Unixタイム成形用の年月日 | |
$today_d = gmdate( 'd', $local_timestamp ); | |
?> | |
<ul class="each_creature_event"> | |
<?php | |
$urgent_info_repeater = get_field( 'urgent_info_repeater', $each_kannai_event->ID ); | |
foreach( $urgent_info_repeater as $each_urgent_info ) : | |
// カウントアップ | |
$boxcounter++; | |
// 緊急お知らせテキスト | |
$urgent_info_text = $each_urgent_info[ 'urgent_info_text' ]; | |
// 表示期間 | |
$urgent_display = $each_urgent_info[ 'urgent_display' ]; | |
if( $urgent_display == "allday" ) { | |
$urgent_display_start = "09:00"; | |
$urgent_display_time = "540"; | |
} | |
if( $urgent_display == "period" ) { | |
// スタート時間 | |
$urgent_display_start = $each_urgent_info[ 'urgent_display_start' ]; | |
// 表示させる時間(分) | |
$urgent_display_time = $each_urgent_info[ 'urgent_display_time' ]; | |
} | |
// 時間計算 | |
$urgent_time_format = $now . ' ' . $urgent_display_start; | |
$urgent_start_time_unix = strtotime( $urgent_time_format ); | |
$urgent_require_time_unix = $urgent_display_time * 60; | |
$urgent_display_start_before_10 = $urgent_display_start -( 10 * 60 ); | |
$urgent_end_time_unix = $urgent_start_time_unix + $urgent_require_time_unix; | |
if( $each_urgent_info ) : | |
?> | |
<li class="urgent_info <?php | |
if( $urgent_end_time_unix < $local_timestamp_now ) { | |
echo "ended"; | |
} elseif( $urgent_display_start_before_10 < $local_timestamp_now && $local_timestamp_now < $urgent_start_time_unix ) { | |
echo "coming_soon"; | |
} elseif( $urgent_start_time_unix < $local_timestamp_now ) { | |
echo "just_now"; | |
} elseif( $local_timestamp_now < $urgent_display_start_before_10 ) { | |
echo "still_start"; | |
} | |
?>" id="urgent_<?php echo $boxcounter; ?>"> | |
<p id="<?php echo $urgent_end_time_unix; ?>" class="btn_close" title="閉じる">×</p> | |
<?php if( $urgent_info_text ) : ?><p><?php echo $urgent_info_text; ?></p><?php endif; ?> | |
</li> | |
<?php endif; endforeach; ?> | |
<?php | |
$event_kannnai = get_field( 'event_kannnai', $each_kannai_event->ID ); | |
foreach( $event_kannnai as $single_event ) : | |
// 定期イベント名 | |
$single_event_name = esc_html( $single_event[ 'event_name_kannnai' ] ); | |
// イベント所要時間 | |
$single_event_require_time = esc_html( $single_event[ 'event_require_kannnai' ] ); | |
// イベント会場 | |
$single_event_place = esc_html( $single_event[ 'event_place_kannai' ] ); | |
// イベント会場へのリンク | |
$single_event_link = esc_url( $single_event[ 'event_place_link_kannai' ] ); | |
// イベント時間の配列 | |
$single_event_times = $single_event[ 'event_times_kannai' ]; | |
?> | |
<?php if( $single_event_name ) : ?> | |
<?php | |
// $boxcounter カウントアップ | |
$boxcounter++; | |
?> | |
<?php | |
foreach( $single_event_times as $event_time ) : | |
?> | |
<?php | |
// 連番用カウンタ | |
$counter++; | |
// イベントの各時間の時 | |
$each_event_time_hour = $event_time[ 'event_start_hour_kannnai' ]; | |
// イベントの各時間の分 | |
$each_event_time_minute = $event_time[ 'event_start_minute' ]; | |
// イベントの各時間の10分前 | |
$each_event_time_minute_before_10 = $event_time[ 'event_start_minute' ] + 10; | |
// ○○:○○ に整形 | |
$hour_minute = $each_event_time_hour . ':' . $each_event_time_minute; | |
// ○○:○○ に整形 | |
$display_time = '<li style="border-bottom: 1px dotted #CCC;" class="time_' . $counter . '">' . $hour_minute . '</li>'; | |
// 現在の日時から要素を取得 | |
$today = getdate(); | |
// Y/m/d H:i 文字列整形 | |
$time_format = $now . ' ' . $hour_minute; | |
// イベントの実際の開始時刻のUnixtimestamp | |
$actual_event_start_time_unix = strtotime( $time_format ); | |
// イベントの実際の開始時間を整形したもの | |
$transform_actual = gmdate( 'Y/m/d H:i', $actual_event_start_time_unix ); | |
// イベント開始10分前のUnixtimestamp | |
$event_start_befor_10_unix = $actual_event_start_time_unix - ( 10 * 60 ); | |
// イベント開始10分前を整形したもの | |
$transform_before_10 = gmdate( 'Y/m/d H:i', $event_start_befor_10_unix ); | |
// 所要時間をUnixtimestampへ変換 | |
$single_event_require_time_unix = $single_event_require_time * 60; | |
// イベントが終わるであろう予測時間( 現在時刻 + 所要時間 ) | |
$maybe_event_end_time_unix = $local_timestamp_now + $single_event_require_time_unix; | |
// 実際にイベントが終わる時間 | |
$actual_event_end_time_unix = $actual_event_start_time_unix + $single_event_require_time_unix; | |
?> | |
<li class="event_list <?php | |
if( $actual_event_end_time_unix < $local_timestamp_now ) { | |
echo "ended"; | |
} elseif( $event_start_befor_10_unix < $local_timestamp_now && $local_timestamp_now < $actual_event_start_time_unix ) { | |
echo "coming_soon"; | |
} elseif( $actual_event_start_time_unix < $local_timestamp_now ) { | |
echo "just_now"; | |
} elseif( $local_timestamp_now < $event_start_befor_10_unix ) { | |
echo "still_start"; | |
} | |
?>" id="event_<?php echo $counter; ?>"> | |
<p title="閉じる" class="btn_close" id="<?php echo $actual_event_end_time_unix; ?>">×</p> | |
<?php if( $hour_minute ) : ?><p><span class="check"><?php echo $hour_minute; ?></span>より<?php endif; ?> | |
<?php if( $single_event_place ) : ?><?php echo $single_event_place; ?>で<?php endif; ?> | |
<?php if( $single_event_name ) : ?>「<span class="check"><?php echo $single_event_name ?></span>」がはじまります。<?php endif; ?> | |
</li> | |
<?php endforeach; ?> | |
<?php endif; ?> | |
<?php endforeach; ?> | |
</ul> | |
<?php endif; endforeach; ?> | |
</section> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment