【发布时间】:2021-05-04 01:13:29
【问题描述】:
我根据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,为此我需要执行上述相同的操作。
【问题讨论】:
标签: php wordpress woocommerce package shipping-method