我不使用“打折徽章”,因为它不显示%折扣在主商店页面上,我需要显示价格前的百分比。我有一个代码从旧WooCommerce(也许)它不工作,它显示0%,请帮助我重写函数。或者显示如何移动“打折徽章”到一行与产品的价格。tnx
add_filter( 'woocommerce_get_price_html', 'ywp_single_price_html', 100, 2 );
function ywp_single_price_html( $price, $product ) {
$html = $price;
if ( ! is_admin() ) {
$discount = '';
$regular_price = $product->is_type( 'variable' ) ? $product->get_variation_regular_price( 'min', true ) : $product->get_regular_price();
$sale_price = $product->is_type( 'variable' ) ? $product->get_variation_sale_price( 'min', true ) : $product->get_sale_price();
if ( $regular_price && $sale_price ) {
$html .= ywp_get_sale_percentage( $product );
}
if ( $product->is_on_sale() ) {
$html = str_replace( '<del>', '<del>M.R.P.: ', $html );
$html = str_replace( '<ins>', '<ins>Price: ', $html );
}
}
return $html;
}
function ywp_get_sale_percentage( $product ) {
$max_percentage = 0;
$save_price = 0;
if ( $product->is_on_sale() ) {
if ( ! $product->is_type( 'variable' ) ) {
$max_percentage = ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100;
$save_price = $product->get_regular_price() - $product->get_sale_price();
} else {
foreach ( $product->get_children() as $child_id ) {
$variation = wc_get_product( $child_id );
$price = $variation->get_regular_price();
$sale = $variation->get_sale_price();
$percentage = $price - $sale;
$percentage = 0;
if ( $price != 0 && ! empty( $sale ) ) {
$percentage = ( $price - $sale ) / $price * 100;
}
if ( $percentage > $max_percentage ) {
$max_percentage = $percentage;
}
}
}
}
$discount = '<span class="discount-percent">(' . round( $max_percentage ) . '%)</span>';
return $discount;
}
我搜索了这个,我发现了许多代码来实现它,但并不是所有的代码都适合我。我需要为简单产品和可变产品这样做,有人能告诉我如何实现它吗?我需要像这样显示折扣百分比enter image description here
1条答案
按热度按时间rsaldnfx1#
您需要检查是否有有效的销售价格(正常/销售价格的差异)