Because price
is not a post table column (I’m assuming it’s a post meta field), you need to extend the query & order by meta_value_num
instead:
case 'title':
if ( ! $meta_query = $vars->get( 'meta_query' ) )
$meta_query = array();
$meta_query[] = array(
'compare' => '!=',
'value' => '',
'key' => 'price', /* This should be the name of your meta field that stores price */
);
$vars->set( 'meta_query', $meta_query );
$orderby = 'meta_value_num';
$order="ASC";
break;