Hide coupon discount raw if no coupon has been applied on WooCommerce cart page

故事扮演 提交于 2021-01-07 01:02:51

问题


I add coupons and discounts total savings to my cart page. My code works fine but I have an additional question.

This is the code I am currently using:

add_action( 'woocommerce_cart_totals_before_shipping', 'show_total_discount_cart_checkout', 9999 );
 
function show_total_discount_cart_checkout() {
   
   global $woocommerce;
   $discount_total = 0;
    
   foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {         
      $product = $values['data'];
      if ( $product->is_on_sale() ) {
         $regular_price = $product->get_regular_price();
         $sale_price = $product->get_sale_price();
         $discount = ( $regular_price - $sale_price ) * $values['quantity'];
         $regular_total = $regular_price * $values['quantity'];
         $discount_total += $discount;
      }
   }
             
    if ( $discount_total > 0 ) {
      echo '
      
      <tr><th colspan="2">You will save '.     wc_price( $woocommerce->cart->subtotal - $woocommerce->cart->total + $woocommerce->cart->shipping_total*1.23 + $discount_total ) .'</td></tr>
      <tr><th class="smalltl">Price normal</th><td data-title="Poupa" class="smalltot">'.     wc_price( $regular_total ) .'</td></tr>
      <tr><th class="smalltl">Dicsount Pack</th><td data-title="Poupa" class="smalltot">-'.     wc_price( $discount_total ) .'</td></tr>  
      <tr><th class="smalltl">Discount Cupon</th><td data-title="Poupa" class="smalltot">-'.     wc_price( $woocommerce->cart->subtotal - $woocommerce->cart->total + $woocommerce->cart->shipping_total*1.23 ) // need to hide this tr when there i no coupon applied  
.'</td></tr>
      ';
    }
}

Currently: if no coupons are applied, it shows 0.

My question: How can I hide the table output when 0 is displayed?


回答1:


You could use WC_Cart::get_applied_coupons() and when NOT empty.

  • I've cleaned up your code and rewritten it a little bit

So you get:

function show_total_discount_cart_checkout() {
    // Counter
    $discount_total = 0;
    
    // WC Cart
    if ( WC()->cart ) {
        // Get cart
        $cart = WC()->cart;
        
        // If cart is NOT empty
        if ( ! $cart->is_empty() ) {
            // Loop through cart items and calculate total volume
            foreach( $cart->get_cart() as $cart_item ) {
                // Get product
                $product = $cart_item['data'];
                
                // On sale
                if ( $product->is_on_sale() ) {
                    // Getters
                    $regular_price = $product->get_regular_price();
                    $sale_price = $product->get_sale_price();
                    $quantity = $cart_item['quantity'];
                    
                    // Calculations
                    $discount = ( $regular_price - $sale_price ) * $quantity;
                    $regular_total = $regular_price * $quantity;
                    $discount_total += $discount;
                }
            }
        }
    }
    
    // Greater than
    if ( $discount_total > 0 ) {
        // Getters
        $subtotal = $cart->get_subtotal();
        $total = $cart->total;
        $shipping_total = $cart->shipping_total;
        
        // Output
        echo '<tr><th colspan="2">You will save ' . wc_price( $subtotal - $total + $shipping_total * 1.23 + $discount_total ) . '</td></tr>';
        echo '<tr><th class="smalltl">Price normal</th><td data-title="Poupa" class="smalltot">' . wc_price( $regular_total ) . '</td></tr>';
        echo '<tr><th class="smalltl">Dicsount Pack</th><td data-title="Poupa" class="smalltot">-' . wc_price( $discount_total ) . '</td></tr>';
        
        // Get applied coupons
        $coupon_applieds = $cart->get_applied_coupons();
        
        // NOT Empty coupon applieds
        if ( ! empty ( $coupon_applieds ) ) {
            echo '<tr><th class="smalltl">Discount Cupon</th><td data-title="Poupa" class="smalltot">-' . wc_price( $subtotal - $total + $shipping_total * 1.23 ) . '</td></tr>';
        }
    }
}
add_action( 'woocommerce_cart_totals_before_shipping', 'show_total_discount_cart_checkout', 10, 0 );


来源:https://stackoverflow.com/questions/65178848/hide-coupon-discount-raw-if-no-coupon-has-been-applied-on-woocommerce-cart-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!