Using meta_query With WordPress 3.1+
With WordPress 3.1 – we now have the ability to use “meta_query” to show posts associated with a certain custom field. I recently used this in order to create an events listing widget for a client. I needed to query posts in the “Events” category and that had a time stamp defined (which happened to be the start date of the event). The client wanted to show only current/future events (today or later) and wanted to show them in order by the closest event date to the furthest away.
Getting the general query together was a snap – but the orderby did not work unless I had the meta_key defined (this is documented but was overlooked initially).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $now = time(); $args = array ( 'category_name' => 'Events' , 'meta_query' => array ( array ( 'key' => 'sdac_event_time_stamp' , 'value' => $now , 'compare' => '>=' , 'type' => 'NUMERIC' ) ), 'meta_key' => 'sdac_event_time_stamp' , 'order' => 'ASC' , 'orderby' => 'meta_value_num' ); $events_query = new WP_Query( $args ); |
If you take a look at the query itself – the trick was to capture the time now ($now) and then use the compare within the meta_query. Overall – this sort of query makes working with custom fields a lot easier. If you have not checked it out yet – take a look.
Documentation
Function Reference/WP Query