Ajouté WC 3+ compatibilité
Vous n'avez pas les bons arguments dans votre filtre ($price
n'existe pas, par exemple), voir ici le code source associé pour woocommerce_sale_flash
crochet de filtre pour mieux comprendre:
/*
* The filter hook woocommerce_sale_flash is located in:
* templates/loop/sale-flash.php and templates/single-product/sale-flash.php
*/
<?php if ($product->is_on_sale()) : ?>
<?php echo apply_filters('woocommerce_sale_flash', '<span class="onsale">' . esc_html__('Sale!', 'woocommerce') . '</span>', $post, $product); ?>
donc votre code de travail va être quelque chose comme:
add_filter('woocommerce_sale_flash', 'woocommerce_custom_badge', 10, 3);
function woocommerce_custom_badge($output_html, $post, $product) {
// Added compatibility with WC +3
$regular_price = method_exists($product, 'get_regular_price') ? $product->get_regular_price() : $product->regular_price;
$sale_price = method_exists($product, 'get_sale_price') ? $product->get_sale_price() : $product->sale_price;
$saved_price = wc_price($regular_price - $sale_price);
$output_html = '<span class="onsale">' . esc_html__('Save', 'woocommerce') . ' ' . $saved_price . '</span>';
return $output_html;
}
Le code va dans le fichier function.php de votre thème enfant actif (ou le thème) ou encore dans un fichier de plug-in.
Ce code a été testé et fonctionne.
Excellent! Semble fonctionner correctement. Merci LoicTheAztec :) – user7734269