get_the_date() – получает дату публикации поста

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Функция get_the_date() возвращает дату написания определённого поста, либо текущего поста в цикле.

Помните, что функция the_date() выводила дату, только если она отличалась от даты предыдущего поста? Так вот, get_the_date() возвращает дату вне зависимости от этого.

Также осмелюсь предположить, что функция практически полностью идентична функции get_the_time(), её единственные отличия это:

get_the_date( $format = '', $post = null )

Параметры

$format
(строка) Формат даты/времени. Например Y-m-d (2020-01-30). Все возможные форматы вы можете найти в официальной документации PHP.
$post
(число|WP_Post) ID поста или объект поста. По умолчанию – текущий пост в цикле (подробнее про циклы – в видеоуроке).

Как я уже упоминал выше, если не указать переменную $format, то будет использован формат даты, указанный в админке в разделе Настройки > Общие > Формат даты.

Если не указать $post, то будет получена дата создания текущего поста в цикле.

Примеры

Получим значение даты без использования аргументов:

echo get_the_date(); // Выведет 18.05.2020 - это дата создания текущего поста

Получим значение в желаемом формате. Если вдруг хочется узнать, сколько прошло секунд с момента начала Эпохи Unix до даты публикации поста:

$format = 'U';
 
echo get_the_date( $format ); // выведет 1589829502. Больше 1,5 млн секунд прошло уже с 1 января 1970 года

А теперь получим дату публикации определённого поста. Вот тут, если вы хотите использовать значение формата даты по умолчанию, не забудьте указать в качестве первого аргумента пустую строку, иначе, передав в неё ID поста, получим false.

$post_id = 777;
 
echo get_the_date( '', $post_id ); // Выведет 13.04.2020

А теперь укажем все аргументы сразу:

$format = 'l j F Y h:i:s A';
$post = 777;
 
echo get_the_date( $format, $post ); // Выведет Понедельник 20 мая 2020 07:18:22 ПП.

Фильтр get_the_date

Давайте сделаем так, чтобы функция оборачивала возвращаемую дату в теги <time>, хук get_the_date подойдёт идеально, только имейте ввиду, что он сработает на всём сайте.

Также воспользуемся объектом поста $post, чтобы провернуть это только для Записей.

add_filter( 'get_the_date', 'true_date_in_time_tag', 25, 3 );
 
function true_date_in_time_tag( $the_date, $format, $post ) {
 
	if( 'post' !== $post->post_type ) {
		return $the_date;
	}
 
	return '<time datetime="' . date( 'c', strtotime( $the_date ) ) . '>" itemprop="datePublished">' . $the_date . '</time>';
 
}

На случай, если не знаете, куда вставлять код, читайте это.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии