Функция 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>'; }
На случай, если не знаете, куда вставлять код, читайте это.