分享笔记:

WooCommerce变体产品不显示价格前缀

价格显示前缀

之前在WooCommerce税收教程里提到过,我们可以在店铺产品的价格旁添加一个后缀,而 WooCommerce 有一个蛮多人疑问的问题:为什么可变产品的价格默认不显示之前设定好的后缀,而简单产品可以正常显示?

woocommerce单个产品价格显示前缀
单个产品
woocommerce可变体产品价格不显示前缀
可变体产品

为什么可变产品默认不显示价格后缀?

WooCommerce 里最常见的价格后缀,其实就是跟税有关的那种,比如你可以在设置里加上“含税”或“不含税”的说明,甚至还能加点计算内容。

woocommerce产品价格显示后缀

原因其实在插件文件 woocommerce/includes/class-wc-product-variable.php 里就有解释:

注意:可变产品的价格不会像其他类型的产品那样显示后缀。这是因为有些因素,比如某些变体使用了不同的税率,可能跟主价格不一样。要想显示准确的价格,必须加载具体的变体并读取它的价格,但这样会影响性能,而且在某些极端情况下,还有可能出现不准确的情况。

而且可变体产品的价格区间现在默认也不会显示打折价(比如那种原价被划掉的样子),因为这样价格串会很长,看起来会很乱。所以现在默认是显示一个价格区间而已。

woocommerce可变体产品价格显示前缀

那能不能强制让可变产品也显示后缀?

WordPress 里其他东西一样,只要我们想就可以改。

我们可以加一段代码,让 WooCommerce 把可变产品当作简单产品来处理,这样在用户还没选择具体变体之前,也会显示价格后缀。

add_filter('woocommerce_get_price_suffix', function ( $html, $product, $price, $qty ) {
if ( ! $html && $product instanceof WC_Product_Variable) {
if ( ( $suffix = get_option( 'woocommerce_price_display_suffix' ) ) 
&& wc_tax_enabled() 
&& 'taxable' === $product->get_tax_status() 
) {
$replacements = array(
'{price_including_tax}' => wc_price( wc_get_price_including_tax( $product, array( 'qty' => $qty, 'price' => $price ) ) ),
'{price_excluding_tax}' => wc_price( wc_get_price_excluding_tax( $product, array( 'qty' => $qty, 'price' => $price ) ) ),
);
$html = str_replace( array_keys( $replacements ), array_values( $replacements ), ' <small class="woocommerce-price-suffix">' . wp_kses_post( $suffix ) . '</small>' );
}
}
return $html;
}, 10, 4);

添加代码之后就是下面的样子,不过我是不建议这么操作的。

woocommerce可变体产品价格显示前缀

为笔记评分

平均评分 5 / 5. 摘星者: 2

有疑问?留个言吧!

更多结果...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
?>

更多结果...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors