WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a list of products, each with a price in a custom field stored as text such as "2.50" or "5.00" and I am displaying them on the page with a custom query that sorts by the price:

    if(!$wp_query) {
        global $wp_query;

    $args = array(
        'meta_key' => 'price',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'

    query_posts( array_merge( $args , $wp_query->query ) );

This works fine for the prices, but some prices are "POA" and I would like to show them last, however the above orders in such a way that "POA" is shown first.

Is there any way to alter this, or a quick hack I could use to sort the array afterwards and put any "POA" prices last?

share|improve this question
try changing 'orderby' => 'meta_value_num', to 'orderby' => 'meta_value_num meta_value', – Bainternet Mar 13 '12 at 11:51
Thanks but that does not work :( – Shaun Mar 13 '12 at 13:23
Aha! But the other way around does work, meta_value meta_value_num ! Thanks! Do you want to write up an answer so I can vote it up? – Shaun Mar 13 '12 at 13:24
posted as an answer for people who don't read comments. – Bainternet Mar 13 '12 at 13:26
up vote 14 down vote accepted

The OrderBy argument can take more then one parameter so the solution was to change :

'orderby' => 'meta_value_num',


'orderby' => 'meta_value meta_value_num',
share|improve this answer
This just sorts alphabetically, as the second parameter is a no-op, sorting on the same field to no effect. To do this so that the numbers sort numerically and the alphas alphabetically you'd have to use a filter to customize the orderby to use some sort of SQL casing, eg ORDER BY CASE WHEN wp_postmeta.meta_value RLIKE '^[0-9]' THEN '' ELSE wp_postmeta.meta_value END ASC, wp_postmeta.meta_value+0 ASC – bonger Nov 5 '14 at 9:04

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.