下面的函数根据数量、属性值和根据变化设置的基本价格来计算价格。
虽然我可以更新基本价格,但如何在不影响基本价格的情况下更新行小计?
我希望用$cart_item['data']->set_subtotal($total);
代替$cart_item['data']->set_price($total);
这样合乎逻辑的东西,但似乎没有任何研究结果。
add_action('woocommerce_calculate_totals','my_woocommerce_calculate_totals');
function my_woocommerce_calculate_totals($cart) {
// Loop over $cart items
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
// Get line specific data
$roll_width = (float)$cart_item['variation']['attribute_pa_roll-width'];
$line_subtotal = (float)$cart_item['line_subtotal'];
$line_total = $line_subtotal * $roll_width;
$total = number_format((float)$line_total, 2, '.', '');
// Set price
$cart_item['data']->set_price($total);
}
}
这可以使用以下函数来完成,但如果有更好的方法可以实现,请发布:
function my_woocommerce_cart_product_subtotal( $product_subtotal, $product, $quantity, $instance ) {
// Get line specific data
$roll_width = (float)$product->attributes['pa_roll-width'];
$line_total = (float)$product->get_price() * $roll_width * $quantity;
$product_subtotal = number_format((float)$line_total, 2, '.', '');
return wc_price($product_subtotal);
};
add_filter( 'woocommerce_cart_product_subtotal', 'my_woocommerce_cart_product_subtotal', 10, 4 );