WOW павлин

Функция PHP date() и ядро WordPress

3.5/5 - (2 голоса)

Это же просто.

Функция PHP date() и ядро WordPress

Возвращается текущая дата и текущее локальное время сервера (с правильно установленной таймзоной).

Вот каждый может проверить

https://wpavonis.ru/server.php

Но если запустить этот же код из среды WordPress – мы получим другие результаты

UTC
2021-11-20 07:42:01

Что это за фокус?

Почему время по Гринвичу  и таймзона другая? WordPress живет в прошлом?

ДА! Как говорится – “это не баг, а фича”.

При запуске ядро WP устанавливает таймзону на UTC. Сделано это специально.

Вот тут подробнее.

https://wp-kama.ru/function/current_time

ВАЖНО: Функция учитывает время сервера установленное в date.timezone setting и переписывает его в момент инициализации системы, используя date_default_timezone_set('UTC') в файле wp-settings.php. Такой подход позволяет получать как реальное UTC время, так и измененное локальное время сайта.

Вот тут

Поэтому в WordPress сделана специальная функция current_time() – возвращает текущее время сайта, учитывается настройка временной зоны на сайте (timezone). Формат аналогичный date() PHP.

ВАЖНО: один и тот же код PHP с использованием date() будет возвращать разные результаты при работе вне и внутри ядра WordPress. 

Неожиданно :)

Вообщем  – для плагинов WordPress используйте current_time().

P.S. В общем случае у нас есть ЧЕТЫРЕ времени:

  • время UTC/GMT (Гринвич)
  • время сервера (его временная зона)
  • время сайта WordPress (при правильной установке будет совпадать с временем сервера)
  • время на локальной машине пользователя (можно получить через JS)

Данный механизм позволяет “перетаскивать” сайт с одного хостинга на другой, не заботясь о том, какое именно системное время установлено на хостинге (и в какой стране расположен этот хостинг). Фактически WordPress переносит свое время, которое Вы установили в настройках сайта.

Другая проблема – очень непросто изнутри WordPress получить именно системное время сервера – так как функция PHP date() будет работать с учетом таймзоны UTC.

Нужно открывать и смотреть данные из системных файлов.

Вот вариант ниже с чтением информации из системных файлов:

  • /etc/localtime // Mac OS X (and older Linuxes) 
  • /usr/share/zoneinfo
  • /etc/timezone // Ubuntu / Debian
  • /etc/sysconfig/clock // RHEL / CentOS

https://bojanz.wordpress.com/2014/03/11/detecting-the-system-timezone-php/

Код из статьи

$timezone = 'UTC';
if (is_link('/etc/localtime')) {
    // Mac OS X (and older Linuxes)    
    // /etc/localtime is a symlink to the 
    // timezone in /usr/share/zoneinfo.
    $filename = readlink('/etc/localtime');
    if (strpos($filename, '/usr/share/zoneinfo/') === 0) {
        $timezone = substr($filename, 20);
    }
} elseif (file_exists('/etc/timezone')) {
    // Ubuntu / Debian.
    $data = file_get_contents('/etc/timezone');
    if ($data) {
        $timezone = $data;
    }
} elseif (file_exists('/etc/sysconfig/clock')) {
    // RHEL / CentOS
    $data = parse_ini_file('/etc/sysconfig/clock');
    if (!empty($data['ZONE'])) {
        $timezone = $data['ZONE'];
    }
}
 
date_default_timezone_set($timezone);

 Как вариант – запускать внешний скрипт PHP с функцией date() через exec().

Если Вы хотите показывать клиенту на фронтенде его реальное локальное время – то Вы можете это время взять с его локальной машины через JS.

Подпишитесь в VKontakte - нажмите кнопку
Подпишитесь в Telegram - нажмите кнопку
Наша группа ODNOKLASSNIKI

Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла




Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)

В Вашем браузере должна быть настроена обработка ссылок mailto

site_post@bk.ru

или просто скопируйте адрес e-mail



Последние публикации

Как сделать перенос длинной ссылки (URL) на другую строку

16.08.2022
Публикация 2 года назад
Длинная ссылка URL выходит за пределы блока Вот, например, ссылка на сайт MS https://docs.microsoft.com/ru-ru/microsoftteams/platform/concepts/build-and-test/deep-links?tabs=teamsjs-v2 При просмотре на широком экране все в порядке. В мобильной версии сайта ссылка выходит за пределы блока и браузер рисует лишнее место справа. Вроде немного ссылка за пределы блока вышла - но получается так. И самое плохое - наша кнопка "Обратная связь" оказалась за пределами экрана мобильной версии. Особенно такая беда в бесплатных темах WordPress. Как это исправить? Нам нужен CSS для указания переноса строк Таблицы каскадных стилей управляют выводом браузера на экран. Кратко о...
(Читать полностью...)

Ограничение 100 Мб для бесплатной версии All-in-One WP Migration

31.05.2022
Публикация 2 года назад
Есть такой плагин для архивирования сайта  All-in-One WP Migration Читаем статью Плагины для архивирования и переноса сайта Было так: тестовый вариант до 64 Мб бесплатный вариант (расширение Basic) до 500 Мб выше 500 Мб сайт - платный вариант А стало так: бесплатный вариант до 100 МБ платный вариант - сайты более 100 Мб Ссылка на расширение к плагину https://import.wp-migration.com/en Чувствуете, что одной колонки не хватает? Остался вариант только  "премиум". Причем при создании архива Вам плагин ничего не сообщает, что правила игры изменились. Плагин дает возможность создать архив для любого объема сайта. В результате архив у Вас есть - а...
(Читать полностью...)

Новые столбцы в админке WordPress

22.02.2022
Публикация 3 года назад
Как добавить свои столбцы в административной панели WordPress Нужно в простом варианте сделать несколько вещей: создать саму колонку и его название (через add_filter) заполнить его данными (через add_action) при необходимости включить возможность сортировки колонки (через add_filter) Создаем колонку // создаем новую колонку для записей add_filter( 'manage_'.'post'.'_posts_columns', 'tsl_manage_pages_columns', 4 ); function tsl_manage_pages_columns( $columns ){ $columns = array( 'views' => 'Визиты' ); return $columns; } Итого в массиве $columns появится новый элемент (обычно в самом конце) Заполняем...
(Читать полностью...)

Обновление плагина вывода списка страниц в конце поста

20.04.2021
Публикация 4 года назад
Вышла версия 1.9 плагина tsl-plugin-out-list-posts Страница плагина находится здесь Плагин вывода анонсов постов в конце контента Плагин добавляет в конце текста анонсы дочерних или одноуровневых страниц для текущего контента. Логика вывода: список дочерних страниц при отсутствии дочерних страниц - выводятся страницы одного уровня при наличии и дочерних страниц и страниц одного уровня - выводятся дочерние страницы на верхнем уровне при отсутствии дочерних страниц ничего не выводится   По умолчанию выводятся первые 700 знаков текста и миниатюра. Для примера дерево страниц. Верхняя страница Средняя страница 1 Средняя страница 2 Средняя страница...
(Читать полностью...)

Прячем информационные файлы WordPress

13.02.2021
Публикация 4 года назад
После установки WordPress в папке сайта создаются несколько информационных файлов Это собственно файлы: license.txt readme.html Их можно просмотреть через прямой доступ в строке URL. Ранее в файлах добрый WP указывал установленную версию, чем облегчал работу хакеров. Теперь убрали, но нельзя гарантировать, что в будущих обновлениях снова не добавят. Поэтому лучше закрыть. Совет "Удалить после установки!" не подходит - т.к. при обновлении эти файлы будут восстановлены. Файл license.txt Описание лицензии GPL и указание на CMS WP  Файл readme.html Общее описание WordPress Файл wp-config-sample.php Это, собственно, не информационный файл. Это образец для создания...
(Читать полностью...)

WordPress 5.6 – результаты поиска на сайте стали попадать в индекс

05.02.2021
Публикация 4 года назад
В версии WP 5.6 страница с результатами поиска изменилась и стала попадать в индекс поисковых машин Что это такое?  А это теперь WordPress оптимизировал URL выдачи результатов внутреннего поиска в виде domen.ru/search/term Ранее было domen.ru/? s = term И побежали радостные китайские боты заводить в поиск всякую чепуху. Если в этот момент на страницу заходит поисковый  робот: он её проверяет получает ответ от сервера 200 ОК  (даже при отрицательных результатах поиска!) ой и радостно сохраняет в индексе Вот так это выглядит в строке URL   Для запрета поисковым роботам индексации необходимо добавить в файл robots.txt инструкцию Disallow: /search Это запрет на индекс...
(Читать полностью...)

В WP 5.6 добавлена базовая авторизация HTTP

26.01.2021
Публикация 4 года назад
Можно увидеть в файле .htaccess новую строку Это добавлена возможность создавать пароли приложений: на сайте должно быть включено шифрование SSL (протокол HTTPS) для API WP для защиты мобильного входа в админку xml-rpc.php (через сервер WordPress) Подробнее можно прочитать в статье  Пароли приложений (авторизация) Сделано на основе плагина Application Passwords Пароли можно установить в управлении учетной записью пользователя Смысл в том, что Вы указываете мобильное приложение на своем смартфоне (которое, например, WordPress), создаете для него пароль = и Вы можете входить в мобильную версию админки (только с данного устройства) без основного пароля...
(Читать полностью...)

Exit mobile version