Fany_VanDaal icon

Nastavení dopravy zdarma pro všechny dopravy od určité výše

Fany_VanDaal | PRO | 06/28/23 07:38:32 PM UTC | 0 ⭐ | 1536 👁️ | Never ⏰ | []
PHP |

2.31 KB

|

None

|

0 👍

/

0 👎

// Nastavení dopravy zdarma pomocí kupónu
add_filter( 'woocommerce_package_rates', 'wpsh_free_shipping_coupon', 20, 2 );
function wpsh_free_shipping_coupon( $rates, $package ) {
    $has_free_shipping = false;
 
    $applied_coupons = WC()->cart->get_applied_coupons();
    foreach( $applied_coupons as $coupon_code ){
        $coupon = new WC_Coupon($coupon_code);
        if($coupon->get_free_shipping()){
            $has_free_shipping = true;
            break;
        }
    }
 
    foreach( $rates as $rate_key => $rate ){
        if( $has_free_shipping ){
            // Pokud je povolena doprava zdarma, tak ji skryjeme
            if( $rate->method_id == 'free_shipping'){
                unset($rates[$rate_key]);
            }
            // Pro ostatní dopravy nastavíme
            else {
                // Místt cen yzobrazíme ZDARMA
                $rates[$rate_key]->label .= ' ' . __('(ZDARMA)', 'woocommerce');
 
                // Cena dopravy bude
                $rates[$rate_key]->cost = 0;
 
                // Nastavíme daň pro dopravu
                $taxes = array();
                foreach ($rates[$rate_key]->taxes as $key => $tax){
                    if( $rates[$rate_key]->taxes[$key] > 0 )
                        $taxes[$key] = 0;
                }
                $rates[$rate_key]->taxes = $taxes;
            }
        }
    }
    return $rates;
}
 
// Automaticky aplikujeme kupón pro dopravu zdarma
add_action( 'woocommerce_before_cart' , 'add_coupon_notice' );
add_action( 'woocommerce_before_checkout_form' , 'add_coupon_notice' );
 
function add_coupon_notice() {
 
        $cart_total = WC()->cart->get_subtotal();
        $minimum_amount = 1100; // Nastav jaká je minimální výše v košíku, kdy je doprava zdarma
        $currency_code = get_woocommerce_currency();
        wc_clear_notices();
 
       if ( $cart_total < $minimum_amount ) {
              WC()->cart->remove_coupon( 'doprava' ); // zadej kód pro dopravu zdarma.
              wc_print_notice( "Získejte dopravu ZDARMA pokud nakupíte za více než $minimum_amount Kč", 'notice' );
        } else {
              WC()->cart->apply_coupon( 'doprava' );
              wc_print_notice( 'Právě jsme Vám dali dopravu ZDARMA!', 'notice' );
        }        
          wc_clear_notices();
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎