【问题标题】:Get current shipping zone获取当前发货区域
【发布时间】:2021-05-14 11:13:51
【问题描述】:

我需要计算免费送货前的价格。我有两个运输区,我需要知道哪个是最新的。我只设法获得了所有已定义的运输区域,但找不到任何东西来获取有关当前运输区域的信息。这必须根据运费计算器进行相应更改。

有没有办法获取当前的送货区域?

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 );

【问题讨论】:

    标签: wordpress woocommerce storefront


    【解决方案1】:

    要获得“获取当前送货区域”,您可以使用get_zone_matching_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 );
    

    【讨论】:

    • 欢迎...很高兴为您提供帮助。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多