Я создаю специальный способ доставки. ( https://docs.woocommerce.com/document/shipping-method-api/ )
В функции calculate_shipping я хочу установить цену моего метода доставки на основе зоны доставки:
Если судоходная зона «Зона 1» установила цену до 15 еще установленного значения до 20
Поэтому я хочу знать, как я могу получить текущую зону доставки?
Я уже пытаюсь увидеть этот документ: https://docs.woocommerce.com/wc-apidocs/class-WC_Shipping_Zone.html Возможно, я не понимаю …
public function calculate_shipping( $package=Array()) { global $woocommerce; $cart_total=$woocommerce->cart->cart_contents_total; $current_hour=date('His'); $start_hour='110000'; $end_hour='210000'; // CONDITIONAL CHECK // OPEN HOUR if($current_hour >= $start_hour && $current_hour <= $end_hour){ $is_open=true; }else{ $is_open=false; } // price PER ZONE $zone=""; // need to know how to get zone name or zone id if($zone=='Zone 1' && $cart_total>='60'){ $min_order=true; $cost = 6; }elseif($zone=='Zone 2' && $cart_total>='120'){ $min_order=true; $cost = 8; }elseif($zone=='Zone 3' && $cart_total>='180'){ $min_order=true; $cost = 9; }else{ $min_order=false; $cost = 0; } if($is_open==true && $min_order==true){ $allowed=true; }else{ $allowed=false; } $rate = array( 'id' => $this->id, 'label' => 'Livraison Express T '.wc_get_shipping_zone().' T', 'cost' => $cost, ); // Register the rate if($allowed==true){ $this->add_rate( $rate ); } }
Я сам нахожу решение
Как это:
$shipping_zone = WC_Shipping_Zones::get_zone_matching_package( $package ); $zone=$shipping_zone->get_zone_name();
Полная функция:
public function calculate_shipping( $package=Array()) { global $woocommerce; $shipping_zone = WC_Shipping_Zones::get_zone_matching_package( $package ); $zone=$shipping_zone->get_zone_name(); if($zone=='Zone 1'){ $cost = 6; }else{ $cost=12; } $rate = array( 'id' => $this->id, 'label' => 'Delivery Name', 'cost' => $cost, ); $this->add_rate( $rate ); }