Modify cart total amount with filter or hook

Okay so I’m trying to write a filter or hook that will modify the total amount of the shopping cart depending on the total overall amount of items in the shopping cart. For example, if there are three items in the shopping cart, I want to deduct twenty dollars from the total order. Below is the code I have so far, any help is greatly appreciated!

add_filter('woocommerce_cart_contents_total', 'bundle_deals');

function bundle_deals( $cart_contents_total, $cart_contents_count) {
   global $woocommerce;

   if ($woocommerce->cart->get_cart()->cart_contents_count <= 3) {
     $cart_contents_total = $woocommerce->cart->get_cart()->cart_contents_total - 20.00;
   }

   return $cart_contents_total;
}

Related posts

Leave a Reply

2 comments

  1. function woocommerce_cart_subtotal(  $cart_subtotal, $compound, $obj  ){
    
    $t = 0;
    foreach ( $obj->cart_contents as $key => $product ) : 
    
        $product_price = $product['line_total'];    
    
        foreach ( WC()->cart->get_coupons( 'order' ) as $code => $coupon ) : 
    
                $product_price  = 19;//wpq_9522_discount( $product['line_total'], $coupon->discount_type, $coupon->amount ); 
    
        endforeach; 
    
        $t += $product_price;
    
    endforeach; 
    
    return $cart_subtotal;//( $t > 0 ) ? sprintf( '<s>%s</s> %s',      
    $cart_subtotal, wc_price( $t ) ) : $cart_subtotal ;
    }
    
    add_filter( 'woocommerce_cart_subtotal', 'woocommerce_cart_subtotal',      99, 3 );
    
  2. The total amount can be changed from following hook.

    add_action('woocommerce_calculate_totals', array($this, 'calculate_totals'), 10, 1);
    
    function calculate_totals($totals){
    //your code
    }