Ordering WordPress posts with meta values

I have this code below that basically creates 4 links to allow me to sort posts on the front end.

        <div class="sort">
            Sort projects by:
            <a href="http://mydomain.com/find-work/" >Latest Projects</a>
            <a href="http://mydomain.com/find-work/?order=asc&orderby=date" >Ending Soon</a>
            <a href="http://mydomain.com/find-work/?order=asc&orderby=meta_value_num&meta_key=proj_budget" >Budget Low</a>
            <a href="http://mydomain.com/find-work/?order=desc&orderby=meta_value_num&meta_key=proj_budget" >Budget High</a>
        </div>

        <?php   $my_query = new WP_Query( array( 
                        'post_type' => 'project',
                        'orderby' => get_query_var('orderby'),
                        'order' => get_query_var('order'),
                        ));      
                while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

The second link, ordering by date works fine but the two links to order by meta values is not working. I am obviously missing something in my query but for the life of me can’t work it out.

Read More

Any ideas??

Related posts

Leave a Reply

2 comments

  1. It’s quite simple:

    new WP_Query( array( 
                  //I used meta_value_num below, because it's about a numeric field
                  //if you don't have a numeric field, just use meta_value
                  "orderby" => 'meta_value_num',
                  "meta_key" => 'price',
                  "order" => 'DESC'
                  ));