woocommerce 不同属性多个价格只显示一个最低价,并自定义价格后面的文本

多个属性不同价格 会显示两个我们只想显示最低价的时候

情形一:只显示最低价格,即便是最低价格打折的情况下,如下图:

在模板的functions.php加入以下代码即可:

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 );
    $min_price = current( $prices['price'] );

    $min_price_html = wc_price( $min_price ) . $product->get_price_suffix();
    $price = sprintf( __( '%1$s 起售', 'woocommerce' ), $min_price_html );

    return $price;
}

情形二:显示折扣价格和最低价格,如下图:

在模板的functions.php加入以下代码即可:

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 );
    $min_price = current( $prices['price'] );

    $min_keys = current(array_keys( $prices['price'] ));
    $min_price_regular = $prices['regular_price'][$min_keys];
    $min_price_html = wc_price( $min_price ) . $product->get_price_suffix();

    if( $min_price_regular != $min_price ){ //当最低价格打折时,显示原价
        $min_price_regular_html = '<del>' . wc_price( $min_price_regular ) . $product->get_price_suffix() . '</del>';
        $min_price_html = $min_price_regular_html .'<ins>' . $min_price_html . '</ins>';
    }
    $price = sprintf( __( '%1$s 起售', 'woocommerce' ), $min_price_html );

    return $price;
}

情形三:当所有属性价格相同时,不显示自定义文本“起售” ,同样在模板的functions.php 中加入以下代码即可

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'] ));

    // 当所有属性价格相同时,不显示自定义文本“起售”字样
    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();

    // 当最低价格打折时,显示原价
    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( __( '%s 起售', 'woocommerce' ), $min_price_html );

    return $price;
}