Описание
Поле «Выбор даты» предоставляет всплывающее окно jQuery для выбора даты.
Скриншоты

При нажатии на поле открывается календарь, позволяющий редактору контента легко выбрать нужную дату.
Настройки
Формат отображения
Формат даты, отображаемый при выборе даты.Формат возвращаемого значения
Формат даты, возвращаемый при загрузке значения. Обратите внимание: в базе данных значение всегда сохраняется в форматеYmd(ГГГГММДД).Начало недели
Определяет день, с которого начинается неделя. По умолчанию — понедельник.Обязательное поле
Находится на вкладке «Проверка» и запрещает сохранять пустые значения в поле. По умолчанию выключено.Инструкции
Показывает инструкции при отправке данных.
Использование в шаблоне
Поле «Выбор даты» возвращает строку с датой в соответствии с настройкой Формат возвращаемого значения.
Отображение значения
Этот пример показывает, как вывести значение даты.
<p>Дата события: <?php echo esc_html ( get_field( 'date' ) ); ?></p>
Изменение значения
Этот пример показывает, как преобразовать строковое значение даты в объект DateTime.
<?php
// Загружаем значение поля.
$date_string = get_field( 'date' );
// Создаем объект DateTime из значения (форматы должны совпадать).
$date = DateTime::createFromFormat( 'Ymd', $date_string );
// Выводим текущую дату в пользовательском формате.
?>
<p>Дата начала события: <?php echo $date->format( 'j M Y' ); ?></p>
<?php
// Увеличиваем дату на 1 день и снова выводим ее.
$date->modify( '+1 day' );
?>
<p>Дата окончания события: <?php echo $date->format( 'j M Y' ); ?></p>
Запрос записей в заданном порядке
Этот пример показывает, как запрашивать записи, отсортированные по значению пользовательского поля.
<?php
$posts = get_posts( array(
'post_type' => 'event',
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
));
if( $posts ) {
foreach( $posts as $post ) {
// Выполняем нужные действия.
}
}
Запрос записей в диапазоне дат
Этот пример показывает, как запрашивать записи, чтобы найти события, происходящие сегодня.
<?php
// Получаем сегодняшнюю дату в формате Ymd.
$today = date( 'Ymd' );
// Запрашиваем записи с помощью meta_query, сравнивая два пользовательских поля: start_date и end_date.
$posts = get_posts( array(
'post_type' => 'event',
'meta_query' => array(
array(
'key' => 'start_date',
'compare' => '>=',
'value' => $today,
),
array(
'key' => 'end_date',
'compare' => '<=',
'value' => $today,
)
),
));
if( $posts ) {
foreach( $posts as $post ) {
// Выполняем нужные действия.
}
}
Примечания
Формат базы данных
Выбранное значение можно вернуть и отобразить в разных форматах, но в базе данных оно сохраняется как «Ymd». Если вы обновляете это значение вручную, необходимо использовать формат Ymd. Этот формат используется во всех таблицах базы данных WordPress и позволяет легко выполнять запросы к базе данных.
Строки формата даты
Чтобы дополнительно настроить параметры Формат отображения и Формат возвращаемого значения, обратитесь к полному списку строк формата даты в документации DateTime::createFromFormat().
Форматы дат в JavaScript
Некоторые библиотеки JavaScript могут форматировать строки дат PHP иначе. Например, следующая функция даты в PHP:
echo date( 'F j, Y @ g:i a' );
Выведет примерно следующее:
November 19, 2021 @ 1:49 pm
Однако если передать это значение, например, в виджет jQuery UI DatePicker, он воспримет символ @ как специальный символ, который нужно форматировать с помощью временной метки Unix, что нежелательно.
Используйте фильтр acf/settings/php_to_js_date_formats, чтобы исправить это: он преобразует каждый символ @ в '@'. Это гарантирует, что в JavaScript символ будет обработан как строка, а не как символ, который нужно заменить.
add_filter( 'acf/settings/php_to_js_date_formats', 'support_at_symbol_in_date_format', 10, 1 );
function support_at_symbol_in_date_format( $formats ) {
$formats['@'] = "'@'";
return $formats;
}
Переводы
Если необходимо отображать дату не на английском языке, WordPress содержит функцию date_i18n(), которая выполнит перевод за вас.
<?php
// Загружаем значение поля и преобразуем его в числовую временную метку.
$unixtimestamp = strtotime( get_field( 'date' ) );
// Отображаем дату в формате "l d F, Y".
echo date_i18n( "l d F, Y", $unixtimestamp );
Обновлено: 30.09.2026

