2013-10-19 27 views
0

我使用下面的代碼在WordPress的查詢事件(自定義後型),責令按日期按時間順序..如何在當前時間戳之後進行query_posts並按時間順序排序?

query_posts(array('post_type' => 'events', 'showposts' => 10, 'orderby' => 'meta_value_num','meta_key' => '_ecmb_datetime'));

凡Meta鍵_ecmb_datetime的是,這是事件的時間戳。

我不想顯示已經發生的事件,所以我的問題是我如何顯示在當前時間之後發生的事件,以及如何按時間順序排序?

任何幫助是極大的讚賞

回答

1

我不是一個WP專家,但在檢查出法典一些資源,就好像你有一些選擇。 This page似乎暗示不會直接改變query_posts,但如果你知道你在說什麼,那就這樣吧。 This pagethis one一起提出了修改查詢以通過主函數的包裝器的任意字段排序的方法。

我可能會嘗試這樣的:

function get_pending_events($query) { 
    $query->set('orderby', 'meta_value_num'); 
    $query->set('order', 'DESC'); 
    $query->set('meta_value', time()); 
    $query->set('meta_compare', '>='); 
} 

add_action('pre_get_posts', 'get_pending_events'); 

您的日期格式的需求可能會有所不同,但是這可能是去了解它的一種方式。 Codex似乎有很多很好的信息。

+0

太棒了!除了一個例外,這很有效 - 我現在的日期是2013年10月19日,而且我在2013年10月19日有一個* event *(因此,今天),但由於某些原因,此查詢返回今天*之後的第一個事件*。我的查詢代碼是這樣的:''post_type'=>'events','showposts'=> 10,'order'=>'ASC','orderby'=>'meta_value_num','meta_key'=>'_ecmb_datetime', 'meta_value'=> date('U'),'meta_compare'=>'> ='' –

+0

在你問之前,是的,今天的活動時間戳和我博客的當前時間戳都返回2013年10月19日。我應該補充說我的)的時間是下午3點32分,如果這有什麼不同,那麼活動的時間戳會有下午8點的時間。如此迷茫。 –

+0

因此,當您查看數據庫中事件時間戳的數值時,它是否真的比現在從'date('U')'獲得的值更大?我看到了Date對象發生奇怪的時區問題,這將是我的第一次猜測,但我不確定這將如何表達。 – Tarnation

相關問題