Woocommerce:更新购物车中某些产品的价格

时间:2018-04-25 10:41:09

标签: wordpress woocommerce

对于客户而言,我需要为产品提供延期交货,但他们不想为这些产品收费。因此,如果库存为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 );

1 个答案:

答案 0 :(得分:0)

您应该使用/android并使用before_calculate_total功能更改product价格,这样您就不必单独修改set_price。剩下的流程将自动落实到位。

您可以查看此链接,了解如何动态更改它:

Change product price dynamically woocommerce