How do you use orderby with meta_query in WordPress 3.1?

Is it possible to order my list of custom posts, after filtering it with meta_query, by the meta data of my choice?

For example, I have a custom post type called webinars. I am trying to list all upcoming webinars, and have them ordered by the custom meta field called webinar_startDate.

Read More

Using the following query, I was able to return the webinars succesfully excluding the old webinars. However, they still come out in the order they were published, and not by webinar_startDate.

<?php $my_array =  array(
    'meta_query' => array(
            array(
                'key' => 'webinar_startDate',
                'value' => date("Y-m-d H:i:s"),
                'compare' => '>=',
                'type' => 'DATETIME'
            )
    ),
    'orderby' => 'meta_value',
    'post_type' => 'webinars',
    'posts_per_page' => 20,
    'order' => 'ASC'
); ?>

I suspect that due to the change from 3.0 to 3.1, the use of orderby => meta_value is probably different, but I can’t find an answer within the WordPress documentation to explain this.

Can anyone help? Thanks in advance.

Related posts

Leave a Reply

2 comments

  1. the new meta_query array selects which posts the query returns. So yes, you are indicating the ‘key’ within that meta_query, but you can still use the old method of

    'orderby' => 'meta_value', 
    'meta_key' => '_events_meta',
    

    in addition to the meta_query, as these lines indicate how to sort the resulting query. So yes, you might indicate the same meta_key twice.

  2. I’m using the following code for my custom posts called events, to get all posts in a Loop.

    $evtLoop = new WP_Query(array('post_type' => 'events',
                                  'posts_per_page' => 10,
                                  'orderby' => 'meta_value', 
                                  'meta_key' => '_events_meta',
                                  'order'=>'DESC'));
    

    I think you are using your code approximatly the same way. I think you are missing the meta_key with the name of the meta-field to sort. Perhaps it helps if you add

    'meta_key' => 'webinar_startDate',
    

    to the outer array?