Despite meta_key
being deprecated, it is still required to get the orderby to work correctly.
First and foremost though, there’s an error with your code, and that’s in using order_by
and not orderby
(there’s no underscore in the orderby arg).
Give this a shot and see how it works out for you.
$event_query = new WP_Query( array(
'post_type' => 'event',
'meta_key' => 'event-month',
'meta_query' => array(
array(
'key' => 'event-month',
'value' => date("n"),
'compare' => '=',
'type' => 'NUMERIC'
)
),
'orderby' => 'meta_value',
'order' => 'asc',
) );
If you want to add a second meta key, and sort by that key, just ensure that key is inside the meta_key
arg, eg.
$event_query = new WP_Query( array(
'post_type' => 'event',
'meta_key' => 'some-key',
'meta_query' => array(
array(
'key' => 'some-key',
'value' => 'whatever',
'compare' => '=',
'type' => 'NUMERIC'
),
array(
'key' => 'event-month',
'value' => date("n"),
'compare' => '=',
'type' => 'NUMERIC'
)
),
'orderby' => 'meta_value',
'order' => 'asc',
) );
Odd that you should need meta_key
for the sort, but i don’t see the orderby being respected without it, i can see how the query appears inside debug bar‘s queries tab and as far as i can tell meta_key
is currently required to get a proper sort on meta_value
.