Date/Time у WordPress

Компонент Date/Time включає всі операції введення, виведення і зберігання інформації про час і дати в WordPress.

Код WP для роботи з часом і купа пов’язаних функцій написані давно, ще з версії PHP 4. У роботі таких функцій було багато недоліків і багів у версії WordPress 5.3 багато з них було виправлено. Все виправити дуже складно через зворотну сумісність.

Над кодом пов’язаним з роботою згодом у ВП, який був випущений у версії 5.3, працювали більше року. Давайте розглянемо, як зараз працюють Дата/Час і що було зроблено в WordPress 5.3. Якщо коротко, то було зроблено:

  1. Стабільна та коректна робота всього існуючого коду пов’язаного з датами та часом. Виправлено помилки, додано модульні тести та виправлено вбудовану
    документацію для багатьох функцій.
  2. З WP 5.3+ з’явилися нові функції Date API для зручності та сумісності з PHP.
  3. Поліпшено код завдяки новим можливостям PHP 5.6 (нагадаю тепер це мінімальна версія для WP).

Нові функції API

Єдиний спосіб отримання часового поясу

  • wp_timezone_string() – єдиний спосіб отримання часового поясу сайту, незалежно від налаштувань (опції timezone_string/ gmt_offset).

    Функція поверне рядок Region/Location, наприклад, Asia/Tashkentабо рядок виду ±NN:NN, наприклад +02:00. Обидва варіанти дійсні для версій PHP.

  • wp_timezone() витягує часовий пояс сайту як об’єкт DateTimeZone .

Нова локалізація дати

  • wp_date() – основна функція – це повна переробка локалізації дати WordPress. Вона працює з тимчасовими мітками Unix та об’єктами PHP time zone, наприклад DateTimeZone .

Функція date_i18n() тепер вважається застарілою та працює на основі wp_date().

Взаємодія з PHP

Відмова від тимчасових міток WP

WP Date/Time API покладався на так звану “тимчасову мітку WordPress” WP timestamps– суму тимчасової мітки Unix зі зміщенням часового поясу. Це викликало безліч помилок та відсутність сумісності з попередніми версіями PHP або будь-якими зовнішніми системами. У документації помилково говорилося про мітки Unix, коли насправді використовувалися мітки WP timestamps.

Неможливо видалити мітки WP без порушення зворотної сумісності. Але розробники досягли значного прогресу, щоб:

  • скоротити їх використання у ядрі;
  • виправити некоректну документацію;
  • запропонувати новий API, що використовує справжні тимчасові мітки Unix.

Таким чином, з версії WP 5.3:

Не рекомендується:

Рекомендується:

  • Отримуйте час як 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/

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *