我正在为Woocommerce设置一个功能,该功能显示折扣价格和可变产品的常规价格,该功能在价格范围之前添加“ from to”文本。
“ WooCommerce variable products: keep only "min" price with a custom label” 答案线程与我所寻找的内容最匹配,并且像魅力一样工作!
但是,当可变产品的所有变体价格都相同时,则不应显示“起始于”。
所以我做了一个简单的尝试,并在“ 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;
但这并不能真正起作用。感谢并欢迎您提供一些帮助。
答案 0 :(得分:1)
要处理可变产品的所有变体都相同时,您需要使用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文件或任何插件文件中。