Woocomerce Plugin need orderby _sales_price, _price
-
21-12-2019 - |
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
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