簡體   English   中英

獲取當前發貨區域

[英]Get current shipping zone

我需要計算免費送貨前的價格。 我有兩個運輸區,我需要知道哪個是最新的。 我只設法獲得了所有已定義的運輸區域,但找不到任何東西來獲取有關當前運輸區域的信息。 這必須根據運費計算器進行相應更改。

在此處輸入圖像描述

有沒有辦法獲得當前的運輸區域?

function action_woocommerce_cart_totals_after_order_total() {
  echo 'Bis kostenloser versand'; // till free shipping

  $IsValue = WC()->cart->get_subtotal();
  $delivery_zones = WC_Shipping_Zones::get_zones();
  foreach ((array) $delivery_zones as $key => $the_zone ) {
    echo $the_zone['zone_name'];

    // I need to know which is current
  }

};
add_action( 'woocommerce_cart_totals_after_order_total', 'action_woocommerce_cart_totals_after_order_total', 10, 0 );

要獲得“獲取當前運輸區域”,您可以使用get_zone_matching_package() ,因為您必須通過當前的 package ,您可以通過此WC()->session->get( 'chosen_shipping_methods' )[0] 試試下面的代碼。

function action_woocommerce_cart_totals_after_order_total() {
    $shipping_id = WC()->session->get( 'chosen_shipping_methods' )[0];
    $packages    = WC()->shipping->get_packages();
    foreach ( $packages as $i => $package ) {
        if ( isset( $package['rates'] ) && isset( $package['rates'][ $shipping_id ] ) ) {
            $package = $package;
            break;
        }
    }
    $shipping_zone = WC_Shipping_Zones::get_zone_matching_package( $package );
    $zone          = $shipping_zone->get_zone_name();
    echo "zone => ".$zone;

};
add_action( 'woocommerce_cart_totals_after_order_total', 'action_woocommerce_cart_totals_after_order_total', 10, 0 );

暫無
暫無

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

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