【问题标题】:Automatically add a percentage discount if WooCommerce cart contains at least X products如果 WooCommerce 购物车包含至少 X 个产品,则自动添加百分比折扣
【发布时间】:2021-05-29 07:46:13
【问题描述】:

我正在尝试创建一个自动折扣,当购物车包含至少三种或更多产品时,该折扣就会生效。

如果是这样,无论客户是否登录,都应给予 10% 的折扣。

这是我试图开始工作的代码(没有成功)。

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

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

        return;

    $percentage = 10; // 10% discount when cart has a minimum of three products
    $discount = 0;

    // check all cart items
    foreach ( $cart->get_cart() as $cart_item ) {

    // when quantity is more than 3
    if( $cart_item['quantity'] > 3 ) {

    // give 10% discount on the subtotal
    $discount = $percentage / 100;
    }
}
    
    if( $discount > 0 )
    $cart->add_fee( __( '10% OFF', 'woocommerce' ) , -$discount );
}

【问题讨论】:

    标签: php wordpress woocommerce cart discount


    【解决方案1】:

    这取决于您是要计算购物车中的产品数量还是产品数量(内容)的数量。

    在我的回答中,我已经说明了两者,取消注释/删除/调整您的需求。

    function action_woocommerce_cart_calculate_fees( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
        
         // Percentage
        $percentage = 10;
    
        /* Count contents in cart
         *
         * Product A: quantity in cart: 4 
         * Product B: quantity in cart: 1 
         * Product C: quantity in cart: 2
         *
         * count = 7
         *
         */
        //$count = $cart->cart_contents_count;
        
        /* Count products in cart
         *
         * Product A
         * Product B 
         * Product C
         *
         * count = 3
         */
        $count = count( $cart->get_cart() );
        
        // Greater than
        if ( $count > 3 ) {
            // Get subtotal
            $subtotal = $cart->subtotal;
            
            // Calculate
            $discount = ( $subtotal / 100 ) * $percentage;
            
            // Give % discount on the subtotal
            $cart->add_fee( sprintf( __( '%s OFF', 'woocommerce'), $percentage . '%' ), -$discount );
        }
    }
    add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );
    

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2022-12-20
      • 2018-06-24
      • 2021-08-02
      相关资源
      最近更新 更多