Solved! I was using the wrong technique to create a custom query to my taxonomy instead of using the function above I create new function that use query_vars. Here is the code
function taxonomy_posts_order($query) {
global $browsetype;
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
if ( $query->query_vars['taxonomy'] == $term->slug )
{
switch ($browsetype) {
case "Price Descending":
$metakey = '_price';
$order="DESC";
$orderby = 'meta_value_num';
break;
case "Price Ascending":
$metakey = '_price';
$order="ASC";
$orderby = 'meta_value_num';
break;
case "Date Descending":
$metakey = '';
$order="DESC";
$orderby = 'date';
break;
case "Date Ascending":
$metakey = '';
$order="ASC";
$orderby = 'date';
break;
case "Random":
$metakey = '';
$order="";
$orderby = 'rand';
break;
}
$query->query_vars['meta_key'] = $metakey;
$query->query_vars['orderby'] = $orderby;
$query->query_vars['order'] = $order;
}
return $query;
}
if ( !is_admin() ) add_filter( 'pre_get_posts', 'taxonomy_posts_order' );