Return to Snippet

Revision: 326
at July 9, 2006 22:29 by championeer


Updated Code
<?php
		$myrecentposts = $wpdb->get_results(
		"SELECT DISTINCT * FROM $wpdb->posts, $wpdb->post2cat ".
		"WHERE post_date_gmt < UTC_TIMESTAMP() ".//源文件此处为post_date < NOW(),这是将帖子日期与服务器所在时区相比较,但由于我在中国而使用美国的主机,所以将时区改为了中国,导致最新文章无法显示,因此根据天佑的建议,将此处改为post_date_gmt < UTC_TIMESTAMP(),即使用GMT时区进行比较
		"AND (post_status = 'publish') ".
		"AND $wpdb->posts.ID = $wpdb->post2cat.post_id ".
		"AND $wpdb->post2cat.category_id != $side_cat ".
		"GROUP BY $wpdb->posts.ID ".
		"ORDER BY post_date DESC ".
		"LIMIT 10 "); 
	if ($myrecentposts) : foreach ($myrecentposts as $post) : setup_postdata($post); ?>

Revision: 325
at July 9, 2006 21:38 by championeer


Initial Code
<?php
		$myrecentposts = $wpdb->get_results(
		"SELECT DISTINCT * FROM $wpdb->posts, $wpdb->post2cat ".
		"WHERE post_date_gmt < UTC_TIMESTAMP() ".//源文件此处为post_date < NOW(),这是将帖子日期与服务器所在时区相比较,但由于我在中国而使用美国的主机,所以将时区改为了中国,导致最新文章无法显示,因此根据天佑的建议,将此处改为post_date_gmt < UTC_TIMESTAMP(),即使用UTC时区进行比较
		"AND (post_status = 'publish') ".
		"AND $wpdb->posts.ID = $wpdb->post2cat.post_id ".
		"AND $wpdb->post2cat.category_id != $side_cat ".
		"GROUP BY $wpdb->posts.ID ".
		"ORDER BY post_date DESC ".
		"LIMIT 10 "); 
	if ($myrecentposts) : foreach ($myrecentposts as $post) : setup_postdata($post); ?>

Initial URL


Initial Description
这个问题出现在home.php中。
from:天佑
在 home.php 中 $myrecentposts 內的 SQL 是用 post_date 和 NOW() 作比較.
NOW() 這個 function 是會以 server 的 timezone 讀取現時的時間,但 post_date 這個 field 的 timezone 則是你在 WordPress Admin. panel 設定的,兩者是極有機會不同.
11:25 AM 所以如果 server timezone 是比你 WordPress 設定的 timezone 早的話,你遇到的問題便會發生.
11:27 AM 要修改其實很簡單,在 home.php 中,將 $myrecentposts 內的

WHERE post_date < NOW()

改為

WHERE post_date_gmt < UTC_TIMESTAMP()

便可

Initial Title
Broadleaf主题模版的时区问题修正(存在于其1.4rc1,2,3版中)

Initial Tags
wordpress

Initial Language
PHP