购物车中未打折的商品时,Woocommerce 对第二件商品可享受折扣

问题描述 投票:0回答:2

现在我有以下 Woocommerce 折扣:1) 一件商品 --> 仅非促销商品 10% 2) 两件商品 20%,最便宜的商品包括促销商品

我尝试使用基于购物车商品数量的购物车折扣,并且仅适用于未促销的商品 以及 Woocommerce 中成本较低的产品的购物车折扣 答案代码。

当我有两件商品时,如何为第二件商品添加 10% 折扣?

当我有两件商品时,如何为第二件商品添加仅非促销商品的折扣?

php wordpress woocommerce cart discount
2个回答
1
投票

当购物车中没有特价商品时,以下商品将给予第2件商品10%的折扣:

add_action('woocommerce_cart_calculate_fees' , 'custom_2nd_item_discount', 10, 1);
function custom_2nd_item_discount( $cart ){

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

    // Only for 2 items or more
    if ( $cart->get_cart_contents_count() < 2 )
        return;

    // Initialising variable
    $has_on_sale = false;
    $count_items = $discount = 0;
    $percentage  = 10; // 10 %

    // Iterating through each item in cart
    foreach( $cart->get_cart() as $cart_item ){
        $count_items++;
        if( $cart_item['data']->is_on_sale() ){
            $has_on_sale = true;
        }
        if( 2 == $count_items ){
            $discount = wc_get_price_excluding_tax( $cart_item['data'] ) * $percentage / 100;
        }
    }

    // Apply discount to 2nd item for non on sale items in cart
    if( ! $has_on_sale && $discount > 0 )
        $cart->add_fee( sprintf( __("2nd item %s%% Discount"), $percentage), -$discount );
}

代码位于活动子主题(或活动主题)的 function.php 文件中。已测试并有效。


0
投票

仅在 woocommerce 8.9.3 和 wordpress 6.5.4 上进行测试,但它不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.