Question

I am looking for woocommrce sorting with multiple order like "orderby _sales_price, _price".

get_catalog_ordering_args( $orderby = '', $order = '' ) {
switch ( $orderby ) {
        default :
             //Defult PATCH;
            //$args['orderby']  = 'menu_order title';
                            $args['orderby']  = 'meta_value_num';
            #$args['order']    = $order == 'DESC' ? 'DESC' : 'ASC';
                            $args['order']    = 'DESC';
            #$args['meta_key'] = '';
                            $args['meta_key'] = '_sale_price';
                            #echo "<pre>";print_r($ordering);exit;
        break;
    }

}

here is only Important is i make change in return argument with

$args['orderby']  = 'meta_value_num';
$args['order']    = 'DESC';
$args['meta_key'] = '_sale_price';

Now my One level of issue is fixed but i am looking more customization here via order on multiple field like

$args['orderby']  = 'meta_value_num';
$args['order']    = 'DESC';
$args['meta_key'] = '_sale_price, _price';

Let me know if any information required and not getting for the same.

Regards, Jigar

Was it helpful?

Solution

here i found my answer.

if($q['post_type']=="product") {

    if($orderby ==="ORDER BY $wpdb->postmeta.meta_value+0 DESC") {
         $orderby_c = "ORDER BY pm1.meta_value+0 DESC,pm2.meta_value+0 DESC";
    } else if($orderby==="ORDER BY $wpdb->postmeta.meta_value+0 ASC") {
         $orderby_c = "ORDER BY pm1.meta_value+0 ASC,pm2.meta_value+0 ASC";
    } else {
         $orderby_c = "ORDER BY pm1.meta_value+0 DESC,pm2.meta_value+0 DESC";
    }

    $this->request = "SELECT $found_rows $distinct $wpdb->posts.ID FROM $wpdb->posts
                                          LEFT JOIN $wpdb->postmeta pm1 ON $wpdb->posts.ID = pm1.post_id
                                          LEFT JOIN $wpdb->postmeta pm2 ON $wpdb->posts.ID = pm2.post_id
                                          WHERE $wpdb->posts.post_type = 'product' AND $wpdb->posts.post_status = 'publish' 
                                          AND pm1.meta_key = '_sale_price' 
                                          AND pm2.meta_key = '_price' 
                                          $orderby_c $limits";

}

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top