is_on_sale() ) {
return;
}
$text = get_theme_mod( 'sale_badge_text', esc_html__( 'Sale!', 'botiga' ) );
$enable_perc = get_theme_mod( 'sale_badge_percent', 0 );
$perc_text = get_theme_mod( 'sale_percentage_text', '-{value}%' );
if ( !$enable_perc ) {
$badge = '' . esc_html( $text ) . '';
} else {
if ( $product->is_type('variable' ) ) {
$percentages = array();
$prices = $product->get_variation_prices();
foreach( $prices['price'] as $key => $price ){
if( $prices['regular_price'][$key] !== $price ){
$percentages[] = round( 100 - ( floatval($prices['sale_price'][$key]) / floatval($prices['regular_price'][$key]) * 100 ) );
}
}
$percentage = max( $percentages );
} elseif ( $product->is_type('grouped') ) {
$percentages = array();
$children_ids = $product->get_children();
foreach ( $children_ids as $child_id ) {
$child_product = wc_get_product($child_id);
$regular_price = (float) $child_product->get_regular_price();
$sale_price = (float) $child_product->get_sale_price();
if ( $sale_price !== 0 || ! empty($sale_price) ) {
$percentages[] = round(100 - ($sale_price / $regular_price * 100));
}
}
$percentage = max($percentages) ;
} else {
$regular_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_sale_price();
if ( $sale_price !== 0 || ! empty($sale_price) ) {
$percentage = round(100 - ($sale_price / $regular_price * 100) );
} else {
return $html;
}
}
$perc_text = str_replace( '{value}', $percentage, $perc_text );
$badge = '' . esc_html( $perc_text ) . '';
}
return $badge;
}
add_filter( 'woocommerce_sale_flash', 'botiga_sale_badge', 10, 3 );