当我使用WordPress Atom Publishing Protocol Plugin(也就是之前的wp-app.php)通过Atompub API发布条目时,如果条目包含非GMT时间值作为已发布字段,则:
<entry xmlns='http://www.w3.org/2005/Atom'><title type='text'>test</title><content type='text/html'>test</content>
<published>2013-08-27T00:00:00+09:00</published>
<app:control xmlns:app='http://www.w3.org/2007/app'><app:draft>no</app:draft></app:control><category term='test'/></entry>
时区( +09:00 )未正确解析,同一值(GMT时间)存储在post_date
和post_date_gmt
wp_posts
字段中}。
post_date: 2013-08-27 00:00:00
post_date_gmt: 2013-08-27 00:00:00
答案 0 :(得分:0)
使用以下代码替换get_publish_time()
中的wp-content/plugins/atom-publishing-protocol/class-wp-atom-server.php
功能:
/**
* Retrieve published time to display in XML.
*
* @since 2.3.0
*
* @param string $published Time string.
* @return string
*/
function get_publish_time($published) {
$pubtime = DateTime::createFromFormat(DateTime::RFC3339, $published);
if (!$pubtime) {
return array(current_time('mysql'),current_time('mysql',1));
} else {
$localtime = $pubtime->format("Y-m-d H:i:s");
$pubtime->setTimezone( new DateTimeZone('UTC') );
$gmttime = $pubtime->format("Y-m-d H:i:s");
return array($localtime, $gmttime);
}
}
这是因为原始实现中的rfc3339_str2time()
函数会丢弃时区信息。