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>