Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Balakrishnan-flycart/0498defff5ed22b66c5e610276ebf081 to your computer and use it in GitHub Desktop.
Save Balakrishnan-flycart/0498defff5ed22b66c5e610276ebf081 to your computer and use it in GitHub Desktop.
Woo Discount Rules v2- Load discount table price based on selected variant
add_filter('advanced_woo_discount_rules_bulk_table_product_price', function($product_price, $product, $calculate_discount_from, $hasFilter, $filters){
if ($hasFilter && class_exists('\Wdr\App\Helpers\Woocommerce')) {
$is_variable_product = \Wdr\App\Helpers\Woocommerce::productTypeIs($product, 'variable');
if ($is_variable_product) {
foreach ($filters as $filter_val) {
$filter_type = isset($filter_val->type) ? $filter_val->type : '';
$filter_method = isset($filter_val->method) ? $filter_val->method : '';
$filter_value = isset($filter_val->value) ? $filter_val->value : '';
$filter_product_variants = isset($filter_val->product_variants) ? $filter_val->product_variants : '';
if ($filter_type == 'products' && $filter_method == 'in_list') {
if (method_exists($product, 'get_available_variations')){
$available_variations = $product->get_available_variations();
}else{
$available_variations = array();
}
$variation_ids = array();
if(!empty($available_variations) && is_array($available_variations)){
foreach ($available_variations as $variation){
$variation_id = isset($variation['variation_id']) ? $variation['variation_id'] : 0;
$variation_ids[] = $variation_id;
$variation_price[$variation_id]['display_price']=isset($variation['display_price']) ? $variation['display_price'] : 0;
$variation_price[$variation_id]['display_regular_price']=isset($variation['display_regular_price']) ? $variation['display_regular_price'] : 0;
}
$compare_variant = (!empty($variation_ids)) ? array_intersect($variation_ids, $filter_value) : array();
if(is_array($compare_variant) && !empty($compare_variant)){
foreach ($compare_variant as $result_val){
if ($calculate_discount_from == 'regular_price') {
$product_price = isset($variation_price[$result_val]['display_regular_price']) ? $variation_price[$result_val]['display_regular_price'] : 0;
}else{
$product_price = isset($variation_price[$result_val]['display_price']) ? $variation_price[$result_val]['display_price'] : 0;
}
break;
}
}
}
}
}
}
}
return $product_price;
},10, 5);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment