Woocommerce 中的自定义可变产品格式价格(不带小数)

问题描述 投票:0回答:1

我目前正在激活的子主题中的functions.php中使用此附加代码,以在产品使用变体时删除价格范围(因此它只会显示价格“From:X$”而不是“From:X$” - Y$"):

add_filter( 'woocommerce_variable_sale_price_html',
'lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html',
'lw_variable_product_price', 10, 2 );

function lw_variable_product_price( $v_price, $v_product ) {

// Regular Price
$v_prices = array( $v_product->get_variation_price( 'min', true ),
                            $v_product->get_variation_price( 'max', true ) );
$v_price = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
                       wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

// Sale Price
$v_prices = array( $v_product->get_variation_regular_price( 'min', true ),
                          $v_product->get_variation_regular_price( 'max', true ) );
sort( $v_prices );
$v_saleprice = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s','woocommerce')
                      , wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

if ( $v_price !== $v_saleprice ) {
$v_price = '<del>'.$v_saleprice.$v_product->get_price_suffix() . '</del> <ins>' .
                       $v_price . $v_product->get_price_suffix() . '</ins>';
}
return $v_price;
}

这里唯一的问题已经在标题中提到了。我需要在产品列表(默认商店页面)中显示不带小数的价格,而不是像当前显示的那样: enter image description here

我确信如果没有这个额外的代码,我使用的它就没有这些零。

相信我,最后没有两个零看起来好多了。

php wordpress woocommerce product price
1个回答
2
投票

要显示没有小数点的价格 您需要在 Woocommerce 中使用

'decimals'
参数
wc_price()
格式化功能…

因此,例如价格为

499.00
,您将向
wc_price()
添加参数
array('decimals' => 0)

echo wc_price( 499.00, array('decimals' => 0) );

它将输出格式化的html价格,不带小数。

如您所见,它使用 wc_price() 函数从任何格式化价格中删除小数,因此在您的代码中:

$v_price = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
wc_price( $v_prices[0], array('decimals' => 0) ) ) : wc_price( $v_prices[0], array('decimals' => 0) );

对于可变产品定制价格,正如您所希望的,请参阅以下答案:

WooCommerce 可变产品:仅保留带有自定义标签的“最低”价格

您只需将

array('decimals' => 0)
添加到
wc_price()
功能

© www.soinside.com 2019 - 2024. All rights reserved.