Help With issue on pre_get_posts filter in taxonomy

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' );

Leave a Comment