WooC 中的自定义项目价格变化

Custom item prices change in WooC

在 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);

这只适用于编辑。 IE。更新时 - 它设置了我用函数

制定的价格

wooc_item1_price 购物车参数很少(每种产品的数量)


问题是:

如何在将产品添加到购物车后制作相同的产品。 因此,新的小计+总计将在任何 edit/updater 之前按顺序提供。 请帮助我!

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)

它的想法很简单,还需要重新计算税收、优惠券...