在 WooCommerce 中存入延期交货的购物车商品

Deposit on backordered cart items in WooCommerce

我从另一个 post 那里获取了这段代码,基本上这段代码试图以折扣价强制购物车价格。

我想做的是仅在产品缺货时强制打折。因此,如果产品处于缺货状态,客户可以订购该商品,从而在购物车中计算存款。

第二个代码片段答案开始,我尝试更改代码以获得延期交货购物车商品的特定折扣。

原始代码可以正常工作,但如何使其仅适用于延期交货的商品?

我现在尝试了几天 $product->is_on_backorder( 1 ) 但我无法让它工作。如何获取购物车中延期交货的商品总金额?

我知道这是一个简单的解决方案,但我已经尝试了多种解决方案,但都无法正常工作。

更新:要仅针对延期交货的商品,您将使用以下内容:

add_action( 'woocommerce_cart_calculate_fees', 'calculated_deposit_discount_on_backorders' );
function calculated_deposit_discount_on_backorders( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    ## Set HERE your negative percentage (to remove an amount from cart total)
    $percent = -.80; // 80% off (negative)

    $backordered_amount = 0;

    foreach( $cart->get_cart() as $cart_item ) {
        if( $cart_item['data']->is_on_backorder( $cart_item['quantity'] ) ) {
            $backordered_amount = $cart_item['line_total'] + $cart_item['line_tax'];
        }
    }

    ## ## CALCULATION ## ##
    $calculated_amount = $backordered_amount * $percent;

    // Adding a negative fee to cart amount (Including taxes)
    $cart->add_fee( __('Deposit calculation', 'woocommerce'), $calculated_amount, true );

}

代码进入您的活动子主题(或活动主题)的 function.php 文件。应该可以。