我成功获得了一系列运输包裹:
$mypackages = WC()->cart->get_shipping_packages();
print_r($mypackages);
然而,这不会退回运费。因此,在研究之后我添加了以下内容:
$mypackages = WC()->cart->get_shipping_packages();
$mypackages = WC()->shipping->calculate_shipping($mypackages);
print_r($mypackages);
现在没有任何回复。我尝试了WC()->shipping->get_packages();
但是返回了一个空白数组。但是,我的结帐很好,它显示运输方式。
我如何解决这个问题?
答案 0 :(得分:1)
我通过以下方式解决了..
define( 'WOOCOMMERCE_CHECKOUT', true );
define( 'WOOCOMMERCE_CART', true );
WC()->cart->calculate_totals();
WC()->cart->calculate_shipping();
$packages = WC()->shipping->get_packages();
$ packages数组现已成功返回。
答案 1 :(得分:0)
我发现使用WC 3时,get_packages()方法可以正常工作。但是,对于WC版本2,在执行AJAX时调用get_packages不会加载数据。因此,为了制作适用于所有版本的代码,我使用了:
global $woocommerce;
if (version_compare($woocommerce->version, "3.0.0", "<") && defined('DOING_AJAX') && DOING_AJAX) {
WC()->cart->calculate_totals();
WC()->cart->calculate_shipping();
}
$packages = WC()->shipping->get_packages();
这适用于带有和不带有AJAX的WC版本3和2。顺便说一下,已使用WC版本2.6.14和最新的3.4.3(发布时)版本进行了测试。