我已经解决这个问题有一段时间了,我似乎不知道如何更改 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;
但即使当我打印数组时我可以看到这些值发生变化,它在购物车中没有任何作用。
有没有办法将订单项数据值添加到订单项的小计价格中?
谢谢!
尝试添加以下内容以保持购物车项目(产品)价格不变:
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;
}
应该可以。