自定义商品价格在WooC中发生变化

时间:2018-02-15 17:10:23

标签: woocommerce hook-woocommerce

在WooC中有项目行的自定义价格。 现在找到解决方案,以这种方式在编辑顺序中更改小计:

add_action( 'woocommerce_update_order_item', function ($_item_id, $_item, $_order_id) {
    if( $arr_item_meta = wc_get_order_item_meta($_item_id) )
    {
        $prc = wooc_item1_price( $arr_item_meta["_a1"][0], $arr_item_meta["_a2"][0], $arr_item_meta["_a3"][0], $_item->get_product()->get_id() );
      $_item -> set_total( $prc );
            $_item -> set_subtotal( $prc );
            $_item -> save();
    } 
  },10,3);

这仅适用于编辑。即更新时 - 它设置我用功能

的价格

wooc_item1_price与购物车中的争论很少(每种产品的数量)

问题是:

如何将刚刚添加到购物车中的产品制作成相同的产品。 因此,在任何编辑/更新程序之前,将按顺序提供新的小计+总计。 请帮帮我!

1 个答案:

答案 0 :(得分:0)

add_action ('woocommerce_calculate_totals', function( $_cart )
{
    foreach ($_cart->cart_contents as $cart_key => $cart_item) 
    {
    $prc = function_to_make_item_custom_price(
        $_cart->cart_contents[$cart_key]["_param1"],
        $_cart->cart_contents[$cart_key]["_param2"],
        $_cart->cart_contents[$cart_key]["_param3"],
        $_cart->cart_contents[$cart_key]["product_id"]
      );

        $_cart->cart_contents[$cart_key]['line_subtotal'] = $prc;
        $_cart->cart_contents[$cart_key]['line_total']    = $prc;
    }             
}, 10,1);

这是正确的方法 - 在购物车上添加商品的价格。 需要有价格函数function_to_make_item_custom_price来根据参数定制价格。在我的情况下 - 这是产品部分的数量(旅游成人和儿童和婴儿param1,param2,param3)

其简化的想法,还需要重新征税,优惠券......