Показать или скрыть содержимое на основе поля времени/даты ACF

Как я могу отображать и скрывать контент в определенное время в определенный день, используя два поля даты/времени ACF? Я провожу живые видео-мероприятия. Мне нужно показать видео-заполнитель до начала прямого эфира, а затем показать живое видео между начальной и конечной датой/временем (поля даты/времени ACF). Мне нужно будет снова показать видео-заполнитель после даты/времени окончания мероприятия.

Я настроил ACF с полем даты/времени начала и полем даты/времени окончания.

`<?php
$current_date = date('Y-m-d H:i:s');
$current_time = strtotime($current_date);
$start = get_field('start_date');
$end = get_field('end_date');
if ($current_time >= $start && $current_time <= $end){ 
//show content if between start and end time
echo '<h3>We are Live</h3>';
} else {
//show only before or after start & end time
echo '<h6>Not Live</h6>';
}
?>`

Кажется, что это только принимает во внимание день, а не время.


person Matthew Anderson    schedule 05.04.2020    source источник


Ответы (2)


Я бы попробовал использовать WP_Query и использовать массивы meta_query с 'relation'

$query = new WP_Query ( array (
meta_query => array(
  'relation' => 'AND',
array (
  'key' => 'start_date',
  'compare' => '>=',
  'value'.  => $current_time,
  'type' => 'TIME',
),
 array (
  'key' => 'end_date',
  'compare' => '<=',
  'value'.  => $current_time,
  'type' => 'TIME',
)
)
));
 if ( $query->have_posts() ) { while( $query->have_posts() ) {
$query->the_post();
// Your Stuff Here
}
}
person EdgarAlexPoe    schedule 10.04.2020

Я смог добиться этого, преобразовав время начала и окончания в UnixTime и добавив поле для добавления или вычитания часов для разницы часовых поясов.

<?php
$current_date = date('Y-m-d H:i:s');
$current_time = strtotime($current_date);
$time_zone = get_field('time_zone');
$now = strtotime( $time_zone['value'], $current_time);
$start = strtotime(get_field('start_date'));
$end = strtotime(get_field('end_date'));                

if ($now >= $start && $now <= $end){
  // Show  live video between start & end time
} else {
  // Show placeholder video before and after start & end time
}
?>
person Matthew Anderson    schedule 17.04.2020