Advertisement
Fany_VanDaal

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

Jun 28th, 2023
1,192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.31 KB | None | 0 0
  1. // Nastavení dopravy zdarma pomocí kupónu
  2. add_filter( 'woocommerce_package_rates', 'wpsh_free_shipping_coupon', 20, 2 );
  3. function wpsh_free_shipping_coupon( $rates, $package ) {
  4.     $has_free_shipping = false;
  5.  
  6.     $applied_coupons = WC()->cart->get_applied_coupons();
  7.     foreach( $applied_coupons as $coupon_code ){
  8.         $coupon = new WC_Coupon($coupon_code);
  9.         if($coupon->get_free_shipping()){
  10.             $has_free_shipping = true;
  11.             break;
  12.         }
  13.     }
  14.  
  15.     foreach( $rates as $rate_key => $rate ){
  16.         if( $has_free_shipping ){
  17.             // Pokud je povolena doprava zdarma, tak ji skryjeme
  18.             if( $rate->method_id == 'free_shipping'){
  19.                 unset($rates[$rate_key]);
  20.             }
  21.             // Pro ostatní dopravy nastavíme
  22.             else {
  23.                 // Místt cen yzobrazíme ZDARMA
  24.                 $rates[$rate_key]->label .= ' ' . __('(ZDARMA)', 'woocommerce');
  25.  
  26.                 // Cena dopravy bude
  27.                 $rates[$rate_key]->cost = 0;
  28.  
  29.                 // Nastavíme daň pro dopravu
  30.                 $taxes = array();
  31.                 foreach ($rates[$rate_key]->taxes as $key => $tax){
  32.                     if( $rates[$rate_key]->taxes[$key] > 0 )
  33.                         $taxes[$key] = 0;
  34.                 }
  35.                 $rates[$rate_key]->taxes = $taxes;
  36.             }
  37.         }
  38.     }
  39.     return $rates;
  40. }
  41.  
  42. // Automaticky aplikujeme kupón pro dopravu zdarma
  43. add_action( 'woocommerce_before_cart' , 'add_coupon_notice' );
  44. add_action( 'woocommerce_before_checkout_form' , 'add_coupon_notice' );
  45.  
  46. function add_coupon_notice() {
  47.  
  48.         $cart_total = WC()->cart->get_subtotal();
  49.         $minimum_amount = 1100; // Nastav jaká je minimální výše v košíku, kdy je doprava zdarma
  50.         $currency_code = get_woocommerce_currency();
  51.         wc_clear_notices();
  52.  
  53.        if ( $cart_total < $minimum_amount ) {
  54.               WC()->cart->remove_coupon( 'doprava' ); // zadej kód pro dopravu zdarma.
  55.               wc_print_notice( "Získejte dopravu ZDARMA pokud nakupíte za více než $minimum_amount Kč", 'notice' );
  56.         } else {
  57.               WC()->cart->apply_coupon( 'doprava' );
  58.               wc_print_notice( 'Právě jsme Vám dali dopravu ZDARMA!', 'notice' );
  59.         }        
  60.           wc_clear_notices();
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement