WooCommerce-选择变体时删除价格范围

时间:2018-09-12 10:14:25

标签: php wordpress woocommerce

我的变量产品显示两个价格部分,一个是所有产品的价格范围,另一个是所选产品的价格(如果选择了一个)。但是,如果产品的价格相同,则只会显示一个价格。

我想要的是,如果产品价格范围内的某个选项被选中,而我想用所选变体的价格替换该价格范围。如果没有选择任何选项,我希望显示价格范围。我无法为此找到正确的过滤器或挂钩,您能帮上忙吗?

以下是几张图片,向您展示我在说什么;

enter image description here

enter image description here

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;
}

1 个答案:

答案 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/