wp_date()
Получает локализованную дату (переведенную на текущий язык) из переданной метки времени unix.
Эта функция является оберткой для PHP функции date().
Если в выводимой дате используется формат с месяцем или неделей в виде строки, то функция попытается перевести их на текущий язык. В остальных случаях - это аналог date() в PHP.
Это новая функция, предназначенная для замены date_i18n().
Имейте в виду, что эта функция возвращает дату, а не выводит её на экран.
Этой функции, в отличии от date_i18n(), нужно передавать метку времени Unix, без добавления к ней сдвижки временной зоны сайта.
Сдвижка временной зоны добавляется автоматически внутри функции на основе третьего параметра $timezone, в котором можно указать произвольную сдвижку временной зоны.
В связи с введением в версии 5.3 нового API для работы со временем:
Build In PostНе рекомендуется:
-
НЕ получайте время как метка
WP timestamps
(метка времени + сдвижка времени сайта): -
НЕ локализуйте время/дату функцией:
-
НЕ сохраняйте на постоянной основе
WP timestamps
. -
НЕ сравнивайте
WP timestamp'ы
. - НЕ изменяйте временную зону PHP с помощью функции date_default_timezone_set() - это важное требование для правильной работы ядра.
Рекомендуется:
-
Получайте время как
Unix timestamp
(метка времени Unix без сдвижки) или как объект DateTimeImmutable: -
Локализуйте время/дату базируясь на Unix timestamp:
-
Сохраняйте
Unix timestamps
или форматы, которые точно указывают момент времени, например DATE_RFC3339. -
Сравнивайте метки времени Unix, объекты DateTimeImmutable или строковые даты в единой временной зоне.
- Используйте объекты: DateTimeZone и DateTimeImmutable с функцией wp_date(), когда нужно обработать время во временной зоне отличной от зоны сайта).
Подробнее здесь: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/
Хуки из функции
Возвращает
Строку|false
. Переведенную дату. False когда введена неправильная метка времени.
Использование
wp_date( $format, $timestamp, $timezone );
- $format(строка) (обязательный)
- Формат в котором выводить дату, пример:
F j, Y
- Ноябрь 6, 2010. Полный список форматов. В качестве формата можно использовать опцию get_option( 'date_format' ), которая задаётся в разделе "Настройки". - $timestamp(число)
- Метка времени Unix из которой будет получена дата в указанном формате. По умолчанию используется текущая метка time().
По умолчанию: null - (time() - current UNIX time) - $timezone(DateTimeZone)
- Временная зона, которая будет наложена на указанную метку времени. По умолчанию: wp_timezone().
По умолчанию: null (текущая временная зона из опций сайта)
Примеры
#1 Локализация php функции date() в WordPress
Текущее время:
$format = 'j F Y H:i:s'; echo wp_date( $format ); // 24 марта 2021 08:12:07 (время сайта = +5 часов) echo date_i18n( $format ); // 24 марта 2021 08:12:07 (время сайта = +5 часов) echo date( $format ); // 24 March 2021 03:12:07 (UTC время)
Указанное время:
echo wp_date( 'j F Y H:i:s', 0 ); // 1 января 1970 06:00:00 echo wp_date( 'j M Y H:i:s', strtotime('1999-11-15') ); // 15 Ноя 1999 05:00:00 (время сайта = +5 часов) echo wp_date( 'j M Y H:i:s', strtotime('1999-11-15'), new DateTimeZone('UTC') ); // 15 Ноя 1999 00:00:00 (UTC время)
#2 Get a translatable the_date() equivalent
To do this you will need:
echo wp_date( get_option( 'date_format' ), get_post_timestamp() );
Полезная информация: https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/
Заметки
- Global. WP_Locale. $wp_locale WordPress date and time locale object.
Список изменений
С версии 5.3.0 | Введена. |