2014-03-12 59 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);