如何从 WooCommerce 获取自定义运输方式包
How to get custom shipping method packages from WooCommerce
我根据WooCommerce Shipping Method API documentation写了自定义送货方式。它工作正常,并且在计算购物车和结帐页面上的价格时正在做我需要的事情。我在结账页面上也有验证功能,我正在获取包裹,然后将其与选择的方法进行比较。
代码如下:
$packages = WC()->shipping->get_packages();
$chosen_methods = wc_get_chosen_shipping_method_ids();
if (is_array($chosen_methods) && (in_array('new_standard', $chosen_methods) || in_array('new_fast', $chosen_methods) || in_array('new_express', $chosen_methods))) {
foreach ($packages as $i => $package) {
if ($chosen_methods[$i] != 'new_standard' && $chosen_methods[$i] != 'new_fast' && $chosen_methods[$i] != 'new_express') {
continue;
}
// Here some validation code
if ($package['destination']['city'] == 'Paris') {
// Bla bla bla
}
}
}
你能帮我理解为什么一个订单需要多个包裹吗?为什么我获取的是运送方法数组 wc_get_chosen_shipping_method_ids()
而不是获取方法的一个 ID。为什么我使用 foreach 循环到达那里,当它可以像这样更直接时:
// This is just example code of mine for showcase
$package = WC()->shipping->get_package();
if ($package['id'] == 'new_standard' || $package['id'] == 'new_fast' || $package['id'] == 'new_express') {
// validation code here
}
此外,主要问题是: 我怎样才能获得软件包并将它们与 WC_Order 一起使用。我需要调用一些外部 API,为此我需要做与上面描述的相同的事情。
因为当使用一些 3rd Party 运输相关插件或一些自定义代码时,您可以将购物车分成多个运输包裹,因此您可以有多种运输方式(每个运输包裹一个)。
想象一下,您销售的产品可以很重也可以不重……想象一下您允许通过飞机、轮船和卡车运输……有些物品可以空运,有些则不能,这取决于它们的重量。
所以当购物车中有混合物品时(重型和普通),购物车将被分成不同的运输包裹。
这就是为什么有一系列选择的运输方式和一系列运输包裹(即使您不拆分购物车或不使用这些插件)。
因此只有少数 WooCommerce 商店使用多个运输包裹来混合购物车商品。
WooCommerce 订单运输方式的相关话题:
我根据WooCommerce Shipping Method API documentation写了自定义送货方式。它工作正常,并且在计算购物车和结帐页面上的价格时正在做我需要的事情。我在结账页面上也有验证功能,我正在获取包裹,然后将其与选择的方法进行比较。
代码如下:
$packages = WC()->shipping->get_packages();
$chosen_methods = wc_get_chosen_shipping_method_ids();
if (is_array($chosen_methods) && (in_array('new_standard', $chosen_methods) || in_array('new_fast', $chosen_methods) || in_array('new_express', $chosen_methods))) {
foreach ($packages as $i => $package) {
if ($chosen_methods[$i] != 'new_standard' && $chosen_methods[$i] != 'new_fast' && $chosen_methods[$i] != 'new_express') {
continue;
}
// Here some validation code
if ($package['destination']['city'] == 'Paris') {
// Bla bla bla
}
}
}
你能帮我理解为什么一个订单需要多个包裹吗?为什么我获取的是运送方法数组 wc_get_chosen_shipping_method_ids()
而不是获取方法的一个 ID。为什么我使用 foreach 循环到达那里,当它可以像这样更直接时:
// This is just example code of mine for showcase
$package = WC()->shipping->get_package();
if ($package['id'] == 'new_standard' || $package['id'] == 'new_fast' || $package['id'] == 'new_express') {
// validation code here
}
此外,主要问题是: 我怎样才能获得软件包并将它们与 WC_Order 一起使用。我需要调用一些外部 API,为此我需要做与上面描述的相同的事情。
因为当使用一些 3rd Party 运输相关插件或一些自定义代码时,您可以将购物车分成多个运输包裹,因此您可以有多种运输方式(每个运输包裹一个)。
想象一下,您销售的产品可以很重也可以不重……想象一下您允许通过飞机、轮船和卡车运输……有些物品可以空运,有些则不能,这取决于它们的重量。
所以当购物车中有混合物品时(重型和普通),购物车将被分成不同的运输包裹。
这就是为什么有一系列选择的运输方式和一系列运输包裹(即使您不拆分购物车或不使用这些插件)。
因此只有少数 WooCommerce 商店使用多个运输包裹来混合购物车商品。
WooCommerce 订单运输方式的相关话题: