更新日期:2021-11-17

woocommerce 的變動商品價格是顯示『最低價 – 最高價』,一般商場都是標示『XXX元起』,這個我們也能修改做到一樣的顯示方法。

add_filter( 'woocommerce_variable_price_html', 'variable_product_price', 10, 2 );
function variable_product_price( $v_price, $v_product ) {

    if( !is_product() && !is_shop() ) return $v_price;

    // Product Price
    $prod_prices = array(
        $v_product->get_variation_price( 'min', true ),
        $v_product->get_variation_price( 'max', true )
    );

    $prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__('%1$s 起', 'woocommerce'), wc_price( $prod_prices[0] ) ) : wc_price( $prod_prices[0] );

    // Regular Price
    $regular_prices = array(
        $v_product->get_variation_regular_price( 'min', true ),
        $v_product->get_variation_regular_price( 'max', true )
    );

    sort( $regular_prices );

    $regular_price = $regular_prices[0]!==$regular_prices[1] ? sprintf(__('%1$s 起','woocommerce') , wc_price( $regular_prices[0] ) ) : wc_price( $regular_prices[0] );

    if ( $prod_price !== $regular_price ) {
        $prod_price = '<del>'.$regular_price.$v_product->get_price_suffix() . '</del> <ins>' . $prod_price . $v_product->get_price_suffix() . '</ins>';
    }

    return $prod_price;
}