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.
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.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 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.
Method 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?
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0