I prodotti scontati in WooCommerce generalmente mostrano una scritta evidenziata che ha come testo “Sale”, oppure “-30%” o altro. Questo testo può variare e dipende dal tema utilizzato.

Vogliamo modificarlo per renderlo più efficace o impostare dinamicamente la visualizzazione della percentuale di sconto applicata?
Ecco come fare!


Abbiamo 2 modi diversi per farlo:

Metodo 1 – modificando il file functions.php del tema usato, aggiungendo questo codice, visualizzeremo il valore percentuale applicato al prodotto.


/**
woocommerce - visualizza la percentuale di sconto applicata
*/
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 – Cerchiamo e modifichiamo i seguenti file nella cartella del tema usato nome-del-tema/woocommerce/loop/sale-flash.phpnome-del-tema/woocommerce/single-product/sale-flash.php

Il primo file si riferisce alla visualizzazione nelle pagine archivio prodotti mentre il secondo interviene sulla visualizzazione del singolo prodotto.

Potremo semplicemente modificare il testo che compare oppure rendere dinamico anche questo valore, cioè mostrare la percentuale applicata, inserendo questo codice.

 

<?php 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; ?>

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.