In WooCommerce, quando un prodotto è in sconto, solitamente sull’immagine del prodotto viene visualizzata la scritta “Sale”(Offerta).

Per modificare questa scritta, potrebbe essere interessante e più efficace impostare la visualizzazione della percentuale di sconto applicata.

Per fare questo occorre intervenire sul codice modificando il file functions.php

  • Metodo 1
/**
Mostra la percentuale nella singola pagina prodotto e in archivio
WC 2.6.14, WP 4.7.2, PHP 5.5.9
*/

add_action( 'woocommerce_before_single_product_summary', 'labdesign80_show_sale_percentage', 25 );
add_action( 'woocommerce_before_shop_loop_item_title', 'labdesign80_show_sale_percentage', 25 );

function labdesign80_show_sale_percentage() {
global $product;
if ( $product->is_on_sale() ) {
if ( ! $product->is_type( 'variable' ) ) {
$max_percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
} else {
foreach ( $product->get_children() as $child_id ) :
$variation = $product->get_child( $child_id );
$price = $variation->get_regular_price();
$sale = $variation->get_sale_price();
$percentage = $price != 0 && ! empty( $sale ) ? ( ( $price - $sale ) / $price * 100 ) : $max_percentage;
if ( $percentage >= $highest_percentage ) :
$max_percentage = $percentage;
$regular_price = $product->get_variation_regular_price( 'min' );
$sale_price = $product->get_variation_sale_price( 'min' );
endif;
endforeach;
}
echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">-' . round($max_percentage) . '%</span>', $post, $product );
}
}
  • Metodo 2

Modifichiamo i file cartella-del-tema/woocommerce/loop/sale-flash.phpcartella-del-tema/woocommerce/single-product/sale-flash.php

aggiungendo il seguente codice:

<?php
/**
* Product loop sale flash
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

global $post, $product;

?>

<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
global $post, $product;
if ( ! $product->is_in_stock() ) return;
$sale_price = get_post_meta( $product->id, '_price', true);
$regular_price = get_post_meta( $product->id, '_regular_price', true);
if (empty($regular_price)){ //then this is a variable product
$available_variations = $product->get_available_variations();
$variation_id=$available_variations[0]['variation_id'];
$variation= new WC_Product_Variation( $variation_id );
$regular_price = $variation ->regular_price;
$sale_price = $variation ->sale_price;
}
$sale = ceil(( ($regular_price - $sale_price) / $regular_price ) * 100);
?>
<?php if ( !empty( $regular_price ) && !empty( $sale_price ) && $regular_price > $sale_price ) : ?>
<?php echo
apply_filters( 'woocommerce_sale_flash', '<span class="onsale">-' . $sale . '%</span>', $post, $product );
?>
<?php endif; ?>

Potrebbe interessarti anche => Aggiungere la percentuale di sconto sopra il prezzo WooCommerce

Non eseguire modifiche ai file se non sei sicuro di quello che stai facendo. Lascia fare ad un professionista per non rischiare di compromettere il tuo sito web.