我试图了解为什么我的开发和生产WordPress安装在帖子编辑屏幕底部的框中显示错误的修订时间。时间在实际修订屏幕上是正确的,但不在该框中。
问题描述:
我注意到在wp-admin的帖子编辑屏幕上,修订框将显示“ X小时/分钟前”,并且与创建新修订本的当前时间相距4小时。绝对闻起来像时区问题。
我在wp-includes/post-template.php line 1839中找到了WordPress核心代码:
$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小时(GMT偏移),导致打印时间在发布/发布后立即为“ 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')返回本地时间-GMT偏移量。
最后,我的问题:这是WordPress中的错误吗?当您将时区专门设置为America / New_York时,这是要使用的吗?还是正在发生其他我没有考虑的事情?
欢呼