“管理->设置”部分中时区设置的目的是什么?
由于WordPress单独处理时区(与本机PHP功能不同),因此设置和结果存储在选项中。
无论何时需要进行任何与时区相关的操作,都会检索时区设置并在计算/输出中使用。
假设当前格林尼治时间是20:00,假设我在美国东部时间(所以现在是美国东部时间16:00),博客的时间是如何保存的?
每个帖子的数据库中都有两个日期字段。它们都存储日期,没有时区信息,post_date
假定处于当前时区设置中,并且post_date_gmt
假定为UTC。
不幸的是,许多WP代码依赖于post_date
一个,它会导致许多错误。例如,如果更改了时区设置,则所有过去的帖子现在都有错误的时间,因为它们存储在与当前时区不同的时区中。
假设读者正在阅读帖子,并且他/她位于土耳其。所以他们的当地时间是23:00,他们认为23:00是发布时间吗?
否,WP进程和输出时间服务器端,根据其设置。任何客户端设置都是无关的,除非有目的地实现,这是相对罕见的。
假设我使用的是自定义帖子类型,并且我有一个额外的日期/时间字段用于其他日期信息。如何确保自定义日期字段的行为与WordPress字段相同?
不要。WP做这件事的方式是一个非常古老和非常习惯的混乱,有大量的bug。
任何干净的解决方案都应该使用严格明确的日期存储,例如Unix时间戳。具体的选择在很大程度上取决于需要对哪些信息进行处理,以及人类在存储级别上的可读性是否重要。