Sort Posts Best Practice

The function add_query_arg adds or replaces ‘GET’ parameters in a given (or the current) url.

For instance, suppose someone is viewing the page:

www.example.com?order=ASC&orderby=meta_value_num&meta_key=price

(viewing properties in price order). Then the url

$url = add_query_arg(array('meta_key'=>'bedrooms','orderby'=>'meta_value_num'));

Would give you

www.example.com?order=ASC&orderby=meta_value_num&meta_key=bedrooms

(the url to order properties by number of bedrooms).

E.g:

 <?php
   $by_rooms= esc_url(add_query_arg(array('meta_key'=>'bedrooms','orderby'=>'meta_value_num')));
   $by_price = esc_url(add_query_arg(array('meta_key'=>'price','orderby'=>'meta_value_num')));
   $by_data = esc_url(add_query_arg(array('meta_key'=>false,'orderby'=>'date')));
 ?>

 <ul>
    <li> <a href="https://wordpress.stackexchange.com/questions/54358/<?php echo $by_price;?>">Order by price</a></li>
    <li> <a href="<?php echo $by_rooms;?>">Order by rooms</a></li>
    <li> <a href="<?php echo $by_date;?>">Order by date</a></li>
 </ul>