2014-03-12 99 views
1

我有一個自定義的帖子類型,名爲'events',我將在主頁上以事件日期順序顯示前4個更新的事件。我有事件顯示在主頁上,但排序似乎沒有工作(見下面的例子)。它似乎以自己的方式排序。wordpress order by meta_value沒有正確排序

$args = array('post_type' => 'events', 'meta_key' => 'event-date', 'orderby' => 'meta_value', 'order' => 'ASC', 'posts_per_page' => -1); 
$events = new WP_Query($args); 

這是我的代碼,這裏是我回來的結果(日期)。

16/04/2014 
16/05/2014 
19/03/2014 
25/02/2014 
27/02/2014 
28/02/2014 

正如你所看到的,這不是ASC命令,所以我做錯了什麼?

在此先感謝

+0

什麼是事件日期的格式?如果你看結果,事件只按日期排序。它不考慮每個月的n年。嘗試將日期更新爲日期時間格式,然後檢查它。 – Pranita

+1

在你的數據庫中,你應該有日期時間格式的日期。因此在保存活動日期之前,將日期轉換爲日期時間格式。 $ mysqldate = date('Y-m-d',strtotime($ eventdate));然後將$ mysqldate保存到數據庫。 – Pranita

回答

3

嘗試使用meta_value_num代替meta_value在orderBy參數。使用以下代碼:

$args = array(
     'post_type'   => 'events', 
     'meta_key'   => 'event-date', 
     'orderby'   => 'meta_value_num', 
     'order'    => 'ASC', 
     'posts_per_page' => -1 
     ); 

$events = new WP_Query($args);