modify variable product price

modify variable product price

add_filter('woocommerce_variable_price_html', function ($price, $product)
{
    
    $quantity = 1;
    $original_prices_list = $sale_prices_lists = $discount_prices_lists = array();
    $available_variations = \Wdr\App\Helpers\Woocommerce::getProductChildren($product);

    if (!empty($available_variations)) {
        $consider_out_of_stock_variants = apply_filters('advanced_woo_discount_rules_do_strikeout_for_out_of_stock_variants', false);
        $variants_check_limit = (int) apply_filters('advanced_woo_discount_rules_check variants_limit_for_variable_strikeout', 20);

        $variations = [];
        if (count($available_variations) > $variants_check_limit) {
            $variation_prices = Wdr\App\Controllers\ManageDiscount::$woocommerce_helper->getVariationPrices($product);
            $calculate_discount_from = Wdr\App\Controllers\ManageDiscount::$config->getConfig('calculate_discount_from', 'sale_price');
            $original_prices = ($calculate_discount_from) == 'regular_price' ? $variation_prices['regular_price'] : $variation_prices['price'];
            if (!empty($original_prices)){
                $variations[] = array_keys($original_prices, min($original_prices))[0];
                $variations[] = array_keys($original_prices, max($original_prices))[0];
            }
        } else {
            $variations = $available_variations;
        }
        foreach ($variations as $variation_id) {
            if (empty($variation_id)) {
                continue;
            }
            $variation = \Wdr\App\Helpers\Woocommerce::getProduct($variation_id);
            if(!\Wdr\App\Helpers\Woocommerce::variationIsVisible($variation)){
                continue;
            }
            if(!\Wdr\App\Helpers\Woocommerce::isProductHasStock($variation) && !$consider_out_of_stock_variants) {
                continue;
            }
            $prices = Wdr\App\Controllers\ManageDiscount::calculateInitialAndDiscountedPrice($variation, $quantity);
            if (!isset($prices['initial_price']) || !isset($prices['discounted_price'])) {
                $original_prices_list[] = \Wdr\App\Helpers\Woocommerce::getProductRegularPrice($variation);
                $sale_prices_lists[] = \Wdr\App\Helpers\Woocommerce::getProductPrice($variation);
                continue;
            }
            $original_prices_list[] = $prices['initial_price'];
            $discount_prices_lists[] = $prices['discounted_price'];
        }
    }
    $discount_prices_lists = array_unique($discount_prices_lists);
    $original_prices_list = array_unique($original_prices_list);
    if(empty($discount_prices_lists)){
        return $this->removeDuplicateStrikeoutPrice($price);
    }
    if(empty($original_prices_list)){
        return $this->removeDuplicateStrikeoutPrice($price);
    }
    $discount_prices_lists = array_merge($discount_prices_lists, $sale_prices_lists);
    $min_price = min($discount_prices_lists);
    $max_price = max($discount_prices_lists);
    
    if ($min_price == 0) {
        $price = 'From ' . wc_price($max_price) . $product->get_price_suffix();
    } else {
        $price = 'From ' . wc_price($min_price) . $product->get_price_suffix();
    }
    return $price;
}, 9999, 2);