php - Muestre el porcentaje de descuento cerca del precio de venta en páginas de productos individuales para WC 3.0+
wordpress woocommerce (1)
woocommerce_sale_price_html
gancho
woocommerce_sale_price_html
ha sido reemplazado por un gancho diferente en WooCommerce 3.0+, que ahora tiene 3 argumentos (pero ya no es el argumento
$product
).
Aquí está ese código funcional similar:
// Only for WooCommerce version 3.0+
add_filter( ''woocommerce_format_sale_price'', ''woocommerce_custom_sales_price'', 10, 3 );
function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) {
$percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).''%'';
$percentage_txt = __('' Save '', ''woocommerce'' ).$percentage;
$price = ''<del>'' . ( is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price ) . ''</del> <ins>'' . ( is_numeric( $sale_price ) ? wc_price( $sale_price ) . $percentage_txt : $sale_price . $percentage_txt ) . ''</ins>'';
return $price;
}
Este código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.
Este código se prueba y funciona solo para WooCommerce versión 3.0+
Actualice para evitar el valor porcentual
NAN%
cuando los precios normales y de venta tienen formato HTML previo:
add_filter( ''woocommerce_format_sale_price'', ''woocommerce_custom_sales_price'', 10, 3 );
function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) {
// Getting the clean numeric prices (without html and currency)
$regular_price = floatval( strip_tags($regular_price) );
$sale_price = floatval( strip_tags($sale_price) );
// Percentage calculation and text
$percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).''%'';
$percentage_txt = __('' Save '', ''woocommerce'' ).$percentage;
return ''<del>'' . wc_price( $regular_price ) . ''</del> <ins>'' . wc_price( $sale_price ) . $percentage_txt . ''</ins>'';
}
Este código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.
Este código se prueba y funciona solo para WooCommerce versión 3.0+ (gracias a @AsifRao)
Tenía este código en
function.php
de mi tema para mostrar el porcentaje después del precio y funcionaba bien en WooCommerce v2.6.14.
Pero este fragmento ya no funciona en WooCommerce versión 3.0+.
¿Cómo puedo arreglar eso?
Aquí está ese código:
// Add save percent next to sale item prices.
add_filter( ''woocommerce_sale_price_html'', ''woocommerce_custom_sales_price'', 10, 2 );
function woocommerce_custom_sales_price( $price, $product ) {
$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
return $price . sprintf( __('' Save %s'', ''woocommerce'' ), $percentage . ''%'' );
}