如何修改 woocommerce 中订单项的小计?

问题描述 投票:0回答:1

我已经解决这个问题有一段时间了,我似乎不知道如何更改 woocommerce 中订单项的订单项小计。

你看,我正在建立一个租赁网站,在选择日期并计算上一页上的价格时,如果你想要送货(根据距离),你还可以计算你的送货费。

我的送货费作为行项目数据显示在购物车中,如下所示:

如您所见,租赁期的总价为 900.00 美元。我想将运费添加到总额中,我尝试:

add_action( 'woocommerce_before_calculate_totals', 'set_delivery_cart_item_price', 20, 1 );
function set_delivery_cart_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ){
        if( isset($cart_item['pr_field'])  && ! empty($cart_item['pr_field']) ) {
            $price = $cart_item['data']->get_price();
            $price = $price + $cart_item['pr_field'];
            $cart_item['data']->set_price( $price );
        }
    }
}

但最终会将行项目总计更改为:

我希望产品名称下方的总计保持为 900.00,而小计则增加(总计下方的 900)。我已经尝试过

$cart_item['line_subtotal'] = $price;
$cart_item['line_total'] = $price;
但即使当我打印数组时我可以看到这些值发生变化,它在购物车中没有任何作用。

有没有办法将订单项数据值添加到订单项的小计价格中?

谢谢!

php wordpress woocommerce cart woocommerce-bookings
1个回答
0
投票

尝试添加以下内容以保持购物车项目(产品)价格不变:

add_filter( 'woocommerce_cart_item_price', 'display_cart_item_price_html', 2000, 2 );
function display_cart_item_price_html( $price_html, $cart_item ) {
    if( isset($cart_item['pr_field'])  && ! empty($cart_item['pr_field']) ) ) {
        $product = wc_get_product($cart_item['variation_id'] > 0 ? : $cart_item['product_id']);

        if ( WC()->cart->display_prices_including_tax() ) {
            $price = wc_get_price_including_tax($product);
        } else {
            $price = wc_get_price_excluding_tax($product);
        }
        return wc_price( $price );
    }
    return $price_html;
}

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.