【问题标题】:Woocommerce Absolute discount for specific simple productsWoocommerce 特定简单产品的绝对折扣
【发布时间】:2020-04-26 00:10:03
【问题描述】:

首先,我的 Woocommerce 商店中有几个简单的产品。 如果客户拿了 2 件一件产品,价格不应该翻倍。相反,产品 A 1 件的成本为 40,如果客户想要第二件,它应该花费 20 - 所以总共 60。产品 B - 1 个单元的成本为 25,而 2 个单元的总成本应为 40。

我尝试在购物车总数中添加一个绝对值,但即使这样也不起作用(在 stackoverflow 上找到此代码)。

  function add_discount_price_absolute( $cart_object ) {
    global $woocommerce;
    $custom_discount_absolute = 15; // custom discount percent
    $pdtcnt=0;

    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) {
        $pdtcnt++;
        if($pdtcnt>1) { // from second product
            $oldprice = $cart_item['data']->price; //original product price
            $newprice = $oldprice + $custom_discount_absolute; //discounted price
            $cart_item['data']->set_price($newprice);
        }        
    }
}

add_action( 'woocommerce_before_calculate_totals', 'add_discount_price_absolute' );

非常感谢您的帮助。谢谢

【问题讨论】:

    标签: wordpress woocommerce cart price


    【解决方案1】:

    你可以使用woocommerce_before_calculate_totals钩子

    function add_discount_price_absolute( $cart_object ) {  
        $new_price = 20;
    
        foreach ($cart_object->cart_contents as $key => $cart_item ) {          
            $product = wc_get_product( $cart_item['product_id'] );
            $productcount = $cart_item['quantity'];
            
            //echo '<pre>', print_r($cart_item, 1), '</pre>';
            
            if( $productcount > 1) { // from second product 
                $cart_item['data']->set_price( $new_price );
            }
        }
    }
    add_action( 'woocommerce_before_calculate_totals', 'add_discount_price_absolute', 10, 1 );
    

    【讨论】:

    • 您好乔纳森,感谢您的回复。它几乎可以工作。但是我将 if 块中的代码更改为: if( $pdtcnt > 1) { // from second product // $oldprice = $product->get_price(); //原始产品价格 // $newprice = $oldprice + 5; //折扣价 $newprice = $custom_discount_absolute; $cart_item['data']->set_price($newprice);但是,如果我在购物车中有一种产品的价格为 25,然后我添加另一种产品,我总共得到 30。如果我添加第三或第四种产品,它会正确计算并将 15 添加到总数中。 BR
    • 我已经稍微调整了我的代码。如果你想要这个,你将不得不调整 sub_total woocommerce.wp-a2z.org/oik_api/wc_cartset_subtotal 但为什么要让自己这么难呢?为什么不申请 1 件 25 和 2 件 20 等等?
    • 嗨,好的,谢谢。你能给我看一些代码吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2021-03-14
    • 2021-05-18
    • 1970-01-01
    • 2021-05-16
    • 2021-06-10
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多