如果设置了插件,则调整价格

时间:2015-04-25 14:13:16

标签: php wordpress woocommerce

您好我的wordpress商店有woocommerce插件插件,供用户选择重量并根据重量计算价格, 我有这个代码,将主要价格加到KG的价格, 例如,蛋糕每公斤花费100美元

在购物车中,它显示了6个KG的700美元。但它必须显示600.所以它在计算后加上主要价格。

这是代码

public function add_cart_item( $cart_item ) {
    // Adjust price if addons are set
    if ( ! empty( $cart_item['addons'] ) && apply_filters( 'woocommerce_product_addons_adjust_price', true, $cart_item ) ) {



        foreach ( $cart_item['addons'] as $addon ) {
            if ( $addon['price']  ) {

            }
        }

        $cart_item['data']->adjust_price($addon['price'] );
    }

    return $cart_item;
}

1 个答案:

答案 0 :(得分:1)

$cart_item['data']->adjust_price($addon['price'] );没有做你期望的事情。在第776行的wooocmmerce/includes/abstructs/abstruct-wc-product.php中,您会看到您传递的价格与之前的价格相加。在这个地方必须覆盖旧的价格,而不仅仅是调整。或者您可以在调整之前减去原始价格。

选项1:覆盖价格

$cart_item['data']->set_price($addon['price'] );

选项2:调整价格

$price = (float) $cart_item['data']->get_price($addon['price'] );
$adjustable_price = (float) $addon['price'] 
$cart_item['data']->adjust_price( $adjustable_price );

希望这对你有所帮助。