对于客户而言,我需要为产品提供延期交货,但他们不想为这些产品收费。因此,如果库存为0或库存小于购物车数量,我需要动态更新价格。
这是我的代码:
add_filter( 'woocommerce_cart_product_subtotal', 'modify_cart_product_subtotal', 10, 4 );
function modify_cart_product_subtotal( $product_subtotal, $product, $quantity, $cart ) {
if ( $product->get_stock_quantity() < $quantity ) {
return $product->get_stock_quantity() * $product->get_price();
}
return $product_subtotal;
}
如果是0库存,它就像一个魅力。如果数量大于库存,则仅对可用产品收费,但即使其余部分税收也在增加。如何排除税收计算?
编辑:
如果我只是更新产品的价格,它会为所有产品的价格而不是那些高于可用库存的价格。
function zero_price_for_backorders( $cart_object ) {
global $isProcessed;
if( !WC()->session->__isset( "reload_checkout" )) {
foreach ( $cart_object->get_cart() as $key => $value ) {
if ( $value['data']->get_stock_quantity() < $value['quantity']) {
$value['data']->set_price(0);
}
}
$isProcessed = true;
}
}
add_action( 'woocommerce_before_calculate_totals', 'zero_price_for_backorders', 99 );
答案 0 :(得分:0)
您应该使用/android
并使用before_calculate_total
功能更改product
价格,这样您就不必单独修改set_price
。剩下的流程将自动落实到位。
您可以查看此链接,了解如何动态更改它: