ГлавнаяРазноеПолезные константы для работы со временем в WordPress

Полезные константы для работы со временем в WordPress

Разработчики WordPress часто сталкиваются с потребностью выразить определенный промежуток времени в секундах, например закэшировать фрагмент на 900 секунд, или запланировать задание через 3600 секунд и т.д. Для таких ситуаций в ядре WordPress есть вспомогательные константы.

Таких констант всего пять:

  • MINUTE_IN_SECONDS — одна минута в секундах
  • HOUR_IN_SECONDS — один час в секундах
  • DAY_IN_SECONDS — один день в секундах
  • WEEK_IN_SECONDS — одна неделя в секундах
  • YEAR_IN_SECONDS — один год в секундах

Использовать эти константы можно в темах и плагинах WordPress. Например, чтобы закэшировать фрагмент на 12 часов в транзитном кэше, можно воспользоваться следующим кодом:

set_transient( 'key', $value, 12 * HOUR_IN_SECONDS );

Подобным образом можно запланировать задачу с помощью WP_Cron через две недели, например для подсчета статистики свежих записей:

wp_schedule_single_event( time() + 2 * WEEK_IN_SECONDS, 'my_event' );

Данные константы объявляются в функции wp_initial_constants() на раннем этапе загрузки ядра WordPress в файле default-constants.php. Это значит, что ими можно пользоваться не только в темах, в плагинах и mu-плагинах WordPress, но и в таких специальных файлах как advanced-cache.php, db.php и sunrise.php, которые исполняются еще до загрузки каких-либо плагинов.

Например, MINUTE_IN_SECONDS и другие константы удобно использовать в конфигурации плагина для кэширования страниц Batcache:

$batcache['max_age'] = 10 * MINUTE_IN_SECONDS;
$batcache['times'] = 3;
$batcache['seconds'] = 2 * HOUR_IN_SECONDS;

Константы не стоит использовать при работе с запросами WP_Query. Для таких запросов есть свой собственный гибкий класс WP_Date_Query, который позволяет выполнять комплексные запросы с датами при запросе записей из базы данных WordPress.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!