为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
陪伴而非守候 2023-05-12 16:04:58
我从另一篇文章中获取了这段代码,基本上这段代码试图以折扣价强制购物车价格。我想做的是仅在产品缺货时强制打折。因此,如果产品处于缺货状态,客户可以订购该商品,从而在购物车中计算押金。从Deposit based on a percentage of total cart amount第 2 个代码片段答案,我尝试更改代码以获得延期交货的购物车商品的特定折扣。原始代码可以正常工作,但如何使其仅适用于延期交货的商品?我尝试了几天,现在使用例如$product->is_on_backorder( 1 ),但我无法让它工作。如何获取购物车中延期交货的商品总金额?我知道这是一个简单的解决方案,但我已经尝试了几种解决方案,但无法让它发挥作用。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

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


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 文件。它应该工作。


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信