Posted By

championeer on 07/09/06


Tagged

timezone wordpress


Versions (?)

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


 / Published in: PHP
 

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

WHERE post_date < NOW()

改為

WHERE postdategmt < UTC_TIMESTAMP()

便可

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

Report this snippet  

You need to login to post a comment.