WordPress как на ладони
wordpress jino

the_date() WP 0.71

Выводит дату публикации поста или группы постов (опубликованные в один день). Используется в цикле WordPress.

Предназначена только для использования внутри Цикла WordPress.

Дата публикации группы постов означает, что для постов опубликованных в одни день, дата выводиться только для первого поста. Т.е., для каждого следующего поста в цикле, функция проверяет в какой день опубликован этот пост, и если дата текущего поста и предыдущего совпадают, то для этого поста дата не выводиться.

Чтобы выводить дату для всех постов (с версии 3.0) нужно использовать Теги шаблонов: the_time() или get_the_date().

Работает на основе: get_the_date(), is_new_day()
Хуки из функции:

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

<?php the_date( $format, $before, $after, $echo ); ?>
$format(строка)
Формат даты (в PHP). Например, j F Y выведет "6 ноября 2011". Подробнее смотрите здесь.
По умолчанию: формат установленный в настройках.
$before(строка)
Текст, который нужно написать перед датой.
По умолчанию: ""
$after(строка)
Текст, который нужно написать после даты.
По умолчанию: ""
$echo(логический)
Установите значение в false, если нужно получить результат, а не выводить его на экран.
По умолчанию: true

Примеры

#1. Выведем дату в формате установленном в настройках WordPress:

<p>Пост опубликован: <?php the_date(); ?></p>

#2. Выведем дату в формате 2007-07-23 и обрамим его в тег <h2>:

<?php the_date('Y-m-d', '<h2>', '</h2>'); ?>

Заметки

Влияет на возвращаемое значение условного тега: [is_new_day()](/function/is_new_day ).

Код the date: wp-includes/general-template.php WP 4.8.2

<?php
function the_date( $d = '', $before = '', $after = '', $echo = true ) {
	global $currentday, $previousday;

	if ( is_new_day() ) {
		$the_date = $before . get_the_date( $d ) . $after;
		$previousday = $currentday;

		/**
		 * Filters the date a post was published for display.
		 *
		 * @since 0.71
		 *
		 * @param string $the_date The formatted date string.
		 * @param string $d        PHP date format. Defaults to 'date_format' option
		 *                         if not specified.
		 * @param string $before   HTML output before the date.
		 * @param string $after    HTML output after the date.
		 */
		$the_date = apply_filters( 'the_date', $the_date, $d, $before, $after );

		if ( $echo )
			echo $the_date;
		else
			return $the_date;
	}
}

Cвязанные функции

Из метки: loop (Цикл WP)

Еще из метки: date time (дата время)

Еще из раздела: Записи: посты, страницы, ...

the_date 12 комментариев
Полезные 2 Вопросы 2 Все
  • Допустим, инкогнито

    То, есть, если я буду использовать его в выводе списка статей, то для некоторых статей (которые были опубликованы в 1 день) дата выводится не будет? А есть ли альтернатива, но выводящая дату для всех постов и при том с возможностью не выводить результат? Никак не могу найти подходящую функцию.

    Ответить3.5 года назад #
    • Допустим, инкогнито

      Извините, уже нашел. Кстати, ссылка на get_the_date ведет на the_date

      Ответить3.5 года назад #
  • Андрей cайт: hdmix.net

    Добрый день вывожу дату в таком формате "j F Y" вот что получается (15 март 2015) как сделать чтоб вместо март выводилось марта ?

    Ответить2.5 года назад #
    • Kama4489

      В сети где-то плагин есть russion data. А я вот такой код использую:

      /**
       * Руссифицирует месяца и недели в дате.
       * Функция для фильтра date_i18n.
       * @param строка $date        Дата в принятом формате
       * @param строка $req_format  Формат передаваемой даты
       * @return Дату в русском формате
       */
      function kama_drussify_months( $date, $req_format ){
      	// в формате есть "строковые" неделя или месяц
      	if( ! preg_match('~[FMlS]~', $req_format ) ) return $date;
      
      	$replace = array ( 
      		"январь" => "января", "Февраль" => "февраля", "Март" => "марта", "Апрель" => "апреля", "Май" => "мая", "Июнь" => "июня", "Июль" => "июля", "Август" => "августа", "Сентябрь" => "сентября", "Октябрь" => "октября", "Ноябрь" => "ноября", "Декабрь" => "декабря", 
      
      		"January" => "января", "February" => "февраля", "March" => "марта", "April" => "апреля", "May" => "мая", "June" => "июня", "July" => "июля", "August" => "августа", "September" => "сентября", "October" => "октября", "November" => "ноября", "December" => "декабря", 
      
      		"Jan" => "янв.", "Feb" => "фев.", "Mar" => "март.", "Apr" => "апр.", "May" => "мая", "Jun" => "июня", "Jul" => "июля", "Aug" => "авг.", "Sep" => "сен.", "Oct" => "окт.", "Nov" => "нояб.", "Dec" => "дек.",    
      
      		"Sunday" => "воскресенье", "Monday" => "понедельник", "Tuesday" => "вторник", "Wednesday" => "среда", "Thursday" => "четверг", "Friday" => "пятница", "Saturday" => "суббота",
      
      		"Sun" => "вос.", "Mon" => "пон.", "Tue" => "вт.", "Wed" => "ср.", "Thu" => "чет.", "Fri" => "пят.", "Sat" => "суб.", "th" => "", "st" => "", "nd" => "", "rd" => "",       
      	);
      
      	return strtr( $date, $replace );
      }
      add_filter('date_i18n', 'kama_drussify_months', 11, 2);

      Его как плагин или в functions.php вставьте

      3
      Ответить2.5 года назад #
  • Roman cайт: kurtkin.ru

    Огромное спасибо! Перерыл кучу статей в интернете и только ваша статья помогла решить проблему. Все оказалось легко и просто! good

    Ответить2.4 года назад #
  • Дмитрий

    Добрый день, Тимур. А есть ли способ вывести посты по дате? Например, посты за январь, февраль и т.д.

    Ответить2.3 года назад #
  • Дима

    Подскажите у меня такой массив:

    дата почему-то выводится только в первой строчке

    <span class="line1"><?php the_date('j'); ?></span>
    <span class="line2"><?php the_date('M'); ?></span>
    <span class="line3"><?php the_date('Y'); ?></span>
    Ответитьгод назад #
    • Kama4489

      Начало описания функции прочитай... Там же все написано!

      Дата публикации группы постов означает, что для постов опубликованных в одни день, дата выводиться только для первого поста. Т.е., для каждого следующего поста в цикле, функция проверяет в какой день опубликован этот пост, и если дата текущего поста и предыдущего совпадают, то для этого поста дата не выводиться.

      Чтобы выводить дату для всех постов (с версии 3.0) нужно использовать Теги шаблонов: the_time() или get_the_date().

      Т.е. замени <?php the_date('j'); ?> на <?php echo get_the_date('j'); ?>

      Ответитьгод назад #
  • Сергей cайт: myborder.ru

    Доброго дня,
    а если я использую the_excerpt_rss(), как изменить цифру в 55 слов?, если мне например нужно 80. спасибо

  • Закир cайт: nokakdelat.ru @

    Как сделать если, сегодня опубликовали запись и дата показывает "Сегодня" а если пройдет день, вместо сегодня появляется "Вчера" а потом дата 15 май 2017

    Ответить4 месяца назад #

Здравствуйте, !

Ваш комментарий