我想显示价格(正常价格和销售价格)下的折扣销售百分比。
帖子中有一个非常接近的解决方案:
但是问题在于它改变了价格。 在代码显示如下之前:
在这样的代码之后:
如您所见,小数点消失了并且百分比不正确,因为它应该显示15%价格55€-15%折扣-> 46,75€
使用的代码:
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 '' . wc_price( $regular_price ) . ' ' . wc_price( $sale_price ) . $percentage_txt . '';
}
我的预期结果将是这样,但找不到解决方法。
我已经阅读了很多有关它的文章,但是找不到正确的解决方案。 如果我重复此帖子,我深表歉意。 谢谢
更新于08/24/2019解决
经过对这些网站的一些研究,我终于解决了这个问题,并得到了想要的结果。 我在这里留下了我使用的代码,因此任何人都可以使用它。
add_action( 'woocommerce_single_product_summary',
'porcentaje_ahorro_ficha_producto', 12 );
function porcentaje_ahorro_ficha_producto() {
global $product;
if ( ! $product->is_on_sale() ) return;
if ( $product->is_type( 'simple' ) ) {
$max_percentage = ( ( $product->get_regular_price() - $product-
>get_sale_price() ) / $product->get_regular_price() ) * 100;
} elseif ( $product->is_type( 'variable' ) ) {
$max_percentage = 0;
foreach ( $product->get_children() as $child_id ) {
$variation = wc_get_product( $child_id );
$price = $variation->get_regular_price();
$sale = $variation->get_sale_price();
if ( $price != 0 && ! empty( $sale ) ) {
$percentage = ( $price - $sale ) / $price * 100;
}
if ( $percentage > $max_percentage ) {
$max_percentage = $percentage;
}
}
}
if ( $max_percentage > 0 ) echo "
round($max_percentage) . "%
}
然后我做了一些CSS,仅此而已。 谢谢大家的支持。