我的变量产品显示两个价格部分,一个是所有产品的价格范围,另一个是所选产品的价格(如果选择了一个)。但是,如果产品的价格相同,则只会显示一个价格。
我想要的是,如果产品价格范围内的某个选项被选中,而我想用所选变体的价格替换该价格范围。如果没有选择任何选项,我希望显示价格范围。我无法为此找到正确的过滤器或挂钩,您能帮上忙吗?
以下是几张图片,向您展示我在说什么;
Yagnesh Makwana的代码可用于使此功能正常工作,但是,我需要能够获得当前选定版本的价格。查看$ variation_price下面的if语句是否需要设置为等于当前选定的变化价格;
add_filter( 'woocommerce_variable_sale_price_html', 'detect_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'detect_variation_price_format', 10, 2 );
function detect_variation_price_format( $price, $product ) {
// get min and max price of varaitions and store in $prices array
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
//if min and max price are not the same
if ($prices[0] !== $prices[1]) {
$variation_price = get selected variation price;
$price = sprintf( __( $variation_price, 'woocommerce') );
}
return $price;
}
答案 0 :(得分:1)
Hello @Reece下面的代码对您删除woocommerce中的价格范围很有用。
您可以使用给定的挂钩删除价格范围。
//Remove Price Range
add_filter( 'woocommerce_variable_sale_price_html', 'detect_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'detect_variation_price_format', 10, 2 );
function detect_variation_price_format( $price, $product ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
if ($prices[0] !== $prices[1]) {
$price = $prices[0] !== $prices[1] ? sprintf( __( ”, ‘woocommerce’ ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
}
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( '', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
您可以通过覆盖woo-commerce插件的模板来根据主题更改功能。
有关更多详细信息,请参见链接:https://annaschneider.me/hide-the-price-range-for-woocommerce-variable-products/