获取当前配送区域
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()
,因为您必须通过此 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 );
我需要计算多少才免运费。我有两个运输区,我需要知道哪个是最新的。我只设法获取了所有已定义的运输区域,但找不到任何东西来获取有关当前运输区域的信息。这必须根据运费计算器进行相应更改。
有没有办法获取当前的运输区域?
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()
,因为您必须通过此 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 );