WooCommerce 可变产品:使用不同价格的自定义文本显示最低价格

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

我正在为 Woocommerce 设置一个功能,显示可变产品的折扣价格和正常价格,该功能在价格范围之前添加一个“从到”文本。

WooCommerce 可变产品:仅保留带有自定义标签的“最低”价格答案线程与我正在寻找的产品最匹配,并且工作起来很有魅力!

但是,当可变产品的所有变体具有相同的价格时,不应显示“开始于”。

所以我做了一个简单的尝试,并在“if”条件下方添加了

else { $price = sprintf( __( '%1$s', 'woocommerce' ), $min_price_html ); return $price; }

并整合到if条件中:

$price = sprintf( __( 'À partir de %1$s', 'woocommerce' ), $min_price_html ); return $price;

但这并没有真正起作用。感谢并欢迎一些帮助。

php wordpress woocommerce hook-woocommerce product-price
1个回答
3
投票
要处理可变产品的所有变体都相同的情况,您需要使用

array_unique()

 php 函数和 count()
 来查看所有变体价格是否相同。

所以代码会略有不同:

add_filter( 'woocommerce_variable_price_html', 'custom_min_max_variable_price_html', 10, 2 ); function custom_min_max_variable_price_html( $price, $product ) { $prices = $product->get_variation_prices( true ); $count = (int) count( array_unique( $prices['price'] )); // When all variations prices are the same if( $count === 1 ) return $price; $min_price = current( $prices['price'] ); $min_keys = current(array_keys( $prices['price'] )); $min_reg_price = $prices['regular_price'][$min_keys]; $min_price_html = wc_price( $min_price ) . $product->get_price_suffix(); // When min price is on sale (Can be removed) if( $min_reg_price != $min_price ) { $min_price_reg_html = '<del>' . wc_price( $min_reg_price ) . $product->get_price_suffix() . '</del>'; $min_price_html = $min_price_reg_html .'<ins>' . $min_price_html . '</ins>'; } $price = sprintf( __( 'À partir de %s', 'woocommerce' ), $min_price_html ); return $price; }

代码位于活动子主题(或主题)的functions.php 文件中,或者也位于任何插件文件中。

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