Обзор
Поле «дата и время» позволяет выбрать дату и время с помощью всплывающего окна на jquery. Это поле может использоваться для указания точной даты и времени в вашей теме. Например, можно указать начальную и конечную даты.
Значение может быть возвращено и отображено в разных форматах, но всегда будет сохранено в БД как «Y-m-d H: i: s». Этот формат используется во всех таблицах базы данных WP и позволит легко производить запросы к БД.
История изменений
- Добавлено в 5.3.9
Настройки
Имя | Описание |
---|---|
Отображаемый формат | Формат во время редактирования поля в админке. Посмотрите полный список форматов дат для PHP. |
Возвращаемый формат | Формат возвращаемого значения на бэкенде. Посмотрите полный список форматов дат для PHP. |
День начала недели | Нужно для использования календаря в разных странах. |
Использование в шаблоне
Поле «дата и время» вернет строку, содержащую значение даты и времени в формате, указанном в настройках поля.
Базовый
В примере показано как вывести поле «дата и время».
<p>Дата мероприятия: <?php the_field('start_date'); ?></p>
Query posts
В примере показано, как сделать query запрос к БД и перебрать полученные посты с помощью цикла loop. Тип поста будет ‘event’ (мероприятие). Мы упорядочим данные по значению произвольного поля даты и времени.
<?php
// query запрос
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'event',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'start_date',
'meta_type' => 'DATETIME'
));
if( $posts ): ?>
<h2>Все мероприятия</h2>
<ul id="events">
<?php foreach( $posts as $p ): ?>
<li>
<strong><?php echo $p->post_title; ?></strong>: <?php the_field('start_date', $p->ID); ?> - <?php the_field('end_date', $p->ID); ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
Query posts (для текущих мероприятий)
В коде ниже показано, как запрашивать и перебирать мероприятий, которые в данный момент выполняются (они начались, но еще не закончились). Мы упорядочим данные по значению произвольного поля даты и времени.
При работе с массивом meta_query помните, что WP читает это как $meta $compare $value («start_date» < $ now) («end_date» > $ now).
<?php
// время сейчас
$date_now = date('Y-m-d H:i:s');
// query запрос
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'event',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_date',
'compare' => '<=',
'value' => $date_now,
'type' => 'DATETIME'
),
array(
'key' => 'end_date',
'compare' => '>=',
'value' => $date_now,
'type' => 'DATETIME'
)
),
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'start_date',
'meta_type' => 'DATE'
));
if( $posts ): ?>
<h2>Мероприятия, которые проходят сейчас</h2>
<ul id="events">
<?php foreach( $posts as $p ): ?>
<li>
<strong><?php echo $p->post_title; ?></strong>: <?php the_field('start_date', $p->ID); ?> - <?php the_field('end_date', $p->ID); ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
Query posts (для будущих мероприятий)
В этом примере показано, как запрашивать и перебирать предстоящие события (в ближайшие 7 дней). Мы упорядочим данные по значению произвольного поля даты и времени.
<?php
// время сейчас
$date_now = date('Y-m-d H:i:s');
$time_now = strtotime($date_now);
// время через 7 дней
$time_next_week = strtotime('+7 day', $time_now);
$date_next_week = date('Y-m-d H:i:s', $time_next_week);
// query запрос
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'event',
'meta_query' => array(
array(
'key' => 'start_date',
'compare' => 'BETWEEN',
'value' => array( $date_now, $date_next_week ),
'type' => 'DATETIME'
)
),
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'start_date',
'meta_type' => 'DATETIME'
));
if( $posts ): ?>
<h2>Мероприятия на этой неделе</h2>
<ul id="events">
<?php foreach( $posts as $p ): ?>
<li>
<strong><?php echo $p->post_title; ?></strong>: <?php the_field('start_date', $p->ID); ?> - <?php the_field('end_date', $p->ID); ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
Сохранение значений как unix timestamp
По-умолчанию значение сохраняется в формате «Y-m-d H: i: s». Нам может потребоваться изменить его метку времени Unix. Это может быть необходимо для обеспечения совместимости.
<?php
add_filter('acf/update_value/type=date_time_picker', 'my_update_value_date_time_picker', 10, 3);
function my_update_value_date_time_picker( $value, $post_id, $field ) {
return strtotime($value);
}
?
Похожие
- Тип поля: Дата