woocommerce计算运输不工作

时间:2015-04-15 13:12:55

标签: woocommerce

我成功获得了一系列运输包裹:

$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();但是返回了一个空白数组。但是,我的结帐很好,它显示运输方式。

我如何解决这个问题?

2 个答案:

答案 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(发布时)版本进行了测试。