您好我的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;
}
答案 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 );
希望这对你有所帮助。