Я пытаюсь понять, почему в моих установках WordPress для разработки и производства отображается неправильное время ревизии в поле в нижней части экрана редактирования поста.На текущем экране ревизии указано правильное время, но не в этом поле.
Описание проблемы:
Я заметил, что на экране редактирования поста в wp-admin появится окно ревизий«X часов / минут назад», и сразу 4 часа от текущего времени, когда создается новая ревизия.Определенно пахнет проблемой с часовым поясом.
Я отследил код ядра WordPress в строке wp-includes / post-template.php 1839 :
$revision_date_author = sprintf(
/* translators: post revision title: 1: author avatar, 2: author name, 3: time ago, 4: date */
__( '%1$s %2$s, %3$s ago (%4$s)' ),
$gravatar,
$author,
human_time_diff( strtotime( $revision->post_modified ), current_time( 'timestamp' ) ),
$date
);
Я добавилкакой-то отладочный код прямо над этим местом для проверки часового пояса America / New_York .
Похоже, что strtotime ($ revision-> post_modified) возвращает правильное местное времясообщение было изменено.
Но current_time ('timestamp') , похоже, берет время локального сервера и затем вычитает 4 часа (смещение по Гринвичу), в результате чего печатное время будет "4часов назад "сразу после публикации / обновления.
Если щелкнуть ревизию, на экране ревизий ( wp-admin / includes / revision.php ) отображается правильный human_time_diff () (например,1 минуту назад или что-то еще).Я нашел этот код:
sprintf( __( '%s ago' ), human_time_diff( $modified_gmt, $now_gmt ) ),
$ now_gmt установлен в самом верху функции на $ now_gmt = time ();
Похоже, проблема в том, что current_time ('timestamp') возвращает местное время - смещение по Гринвичу.
Наконец, мой вопрос: это ошибка в WordPress?Это предназначено, когда вы специально устанавливаете часовой пояс Америка / New_York?Или что-то еще происходит, что я не рассматриваю?
Приветствия