Выбор дата (Date Picker)

Обзор

Поле «дата» позволяет выбрать дату с помощью всплывающего окна на jquery. Это поле может использоваться для указания дат в вашей теме. Например, можно указать начальную и конечную даты.

Обратите внимание, что в предыдущих версиях ACF был параметр «Сохраняемый формат». Этот параметр позволял разработчику изменить формат даты, сохранённой в Базе Данных. Однако, этот параметр создавал много проблем и был удален. Теперь дата хранится в формате «ГГГГММДД».

Настройки

ИмяОписание
Отображаемый форматФормат во время редактирования поля в админке.
Возвращаемый форматФормат возвращаемого значения на бэкенде. Обратите внимание, что значение всегда сохраняется как «ГГГГММДД» в БД.
День начала неделиНужно для использования календаря в разных странах.

Использование в шаблоне

Поле «выбор даты» вернет строку, содержащую значение даты в формате, указанном в настройках поля. В следующих примерах предполагается, что существует поле с именем «date».

Базовый

В примере показано как вывести поле «дата».

<p>Дата мероприятия: <?php the_field('date'); ?></p>

Продвинутый

В коде ниже показано, как получить «сырое» значение (сохраненное в формате «ГГГГММДД») и преобразовать его в числовое значение, чтобы затем совершать с ним необходимые манипуляции.

<?php 
// получем "сырое" значение $date = get_field('date', false, false); // создаем новый экземпляр класса для даты $date = new DateTime($date); ?>
<p>День начала мероприятия: <?php echo $date->format('j M Y'); ?></p> <?php // увеличиваем на 1 день $date->modify('+1 day'); ?> <p>День окончания мероприятия: <?php echo $date->format('j M Y'); ?></p>

Переводы

Чтобы дата отображалась не на английском языке в WordPress есть функция date_i18n(), которая выполнит перевод.

<?php

$dateformatstring = "l d F, Y";
$unixtimestamp = strtotime(get_field('date_picker'));

echo date_i18n($dateformatstring, $unixtimestamp);

?>

Сортировка постов (записей)

В примере показано как можно отсортировать и упорядочить посты (тип постов ‘event’) с помощью запроса по произвольному полю (в нашем случае по дате).

<?php 

// получаем нужные посты
$posts = get_posts(array(
	'post_type'	=> 'event',
	'meta_key'	=> 'date',
	'orderby'	=> 'meta_value_num',
	'order'		=> 'ASC'
));


// цикл
if( $posts ) {
	
	foreach( $posts as $post ) {
		
		setup_postdata( $post );

		// делаем что-то...

	}

	wp_reset_postdata();
	
}

?>

WP_Query для сортировки по дате

В этом примере показано, как можно использовать объект WP_Query для поиска записей, где «start_date» и «end_date» указывают, что запись «активна».

<?php 

$today = date('Ymd');

$args = array (
    'post_type' => 'post',
    'meta_query' => array(
		array(
	        'key'		=> 'start_date',
	        'compare'	=> '<=',
	        'value'		=> $today,
	    ),
	     array(
	        'key'		=> 'end_date',
	        'compare'	=> '>=',
	        'value'		=> $today,
	    )
    ),
);

// получаем посты
$posts = get_posts($args);
?>

Похожие