hi
Could you try this code ?
add_filter( 'woocommerce_get_price_html', function ( $old_html, $product ) {
$new_html = '';
if ($product->get_type() == 'variable') {
$processedProduct = adp_functions()->calculateProduct($product, 1);
if ($processedProduct instanceof \ADP\BaseVersion\Includes\PriceDisplay\ProcessedVariableProduct &&
!is_null($processedProductLowestPrice = $processedProduct->getLowestPriceProduct()) &&
$processedProduct->areRulesApplied()) {
$minVariationPrice = $processedProductLowestPrice->getCalculatedPrice();
$initialPrice = $processedProductLowestPrice->getOriginalPrice();
$percentage = round((($initialPrice - $minVariationPrice) / $initialPrice) * 100);
if($percentage)
$new_html = wc_price($minVariationPrice) . " - %" . $percentage;
} elseif ($product->is_on_sale()) {
$available_variations = $product->get_variation_prices();
$max_percentage = 0;
foreach ($available_variations['regular_price'] as $key => $regular_price) {
$sale_price = $available_variations['sale_price'][$key];
if ($sale_price < $regular_price) {
$percentage = round((($regular_price - $sale_price) / $regular_price) * 100);
if ($percentage > $max_percentage) {
$max_percentage = $percentage;
$minVariationPrice = $sale_price ;
}
}
}
$percentage = $max_percentage;
if($percentage)
$new_html = wc_price($minVariationPrice) . " - %" . $percentage;
}
} elseif ($product->get_type() == 'simple' || $product->get_type() == 'external' || $product->get_type() == 'variation') {
$processedProduct = adp_functions()->calculateProduct($product, 1);
if ($processedProduct instanceof \ADP\BaseVersion\Includes\PriceDisplay\ProcessedProductSimple &&
$processedProduct->areRulesApplied()) {
$initialPrice = $processedProduct->getOriginalPrice();
$calculatedPrice = $processedProduct->getCalculatedPrice();
$percentage = round((($initialPrice - $calculatedPrice) / $initialPrice) * 100);
} elseif ($product->is_on_sale()) {
$calculatedPrice = $product->get_sale_price();
$percentage = round((($product->get_regular_price() - $product->get_sale_price()) / $product->get_regular_price()) * 100);
}
if($percentage)
$new_html = wc_price($calculatedPrice) . " - %" . $percentage;
}
return $new_html ? $new_html : $old_html;
}, PHP_INT_MAX, 2 );