更改购物车中小计价格的计算方式

时间:2019-12-13 作者:developerme

我想更改wooocommerce购物车中的小计价格。如果特定变体产品包含超过1个数量,我想更改购物车上的小计价格。例如,如果产品A的价格为12,则用户将数量更新为2,我想显示相同的小计12。如果数量是3,那么我想显示小计24。每次数量增加时,我想从小计中减去产品的正常价格。我当前的代码正在遵循它,它对我不起作用。

add_action( \'woocommerce_before_calculate_totals\', \'misha_recalculate_price\' );

function misha_recalculate_price( $cart_object ) {

    if ( is_admin() && ! defined( \'DOING_AJAX\' ) )
        return;
     $product_ids = array(2697);

    $quantity = 0;


    foreach ( $cart_object->get_cart() as $hash => $value ) {

        if( in_array( $value[\'variation_id\'], $product_ids )  ) {


            $quantity += $value[\'quantity\'];

        }


    }

    if( $quantity > 1 ) {
        foreach ( $cart_object->get_cart() as $hash => $value ) {



            if( in_array( $value[\'variation_id\'], $product_ids ) ) {

                $newprice = echo $value[\'line_total\'] - $value[\'data\']->get_regular_price();

                 $cart_object->subtotal -= $value[\'data\']->get_regular_price();

                $value[\'data\']->set_price( $newprice );

            }

        }
    }

}

1 个回复
SO网友:Reigel

如果我正确理解了您的目标,我会发现您的代码存在一些问题。。

首先是echo 在里面$newprice = echo $value[\'line_total\'] - $value[\'data\']->get_regular_price();请删除echo.

第二,我认为你最好使用“after”,也就是说woocommerce_after_calculate_totals. 您正在使用“before”,即在代码运行之后,line_total 将被更改。

相关推荐