簡體   English   中英

Woocommerce 獲取當前的運輸區域

[英]Woocommerce get current shipping zone

我創建了一種自定義運輸方式。 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 );

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM