Woocommerce Onepage结账不显示运费

时间:2015-08-27 13:52:21

标签: php wordpress woocommerce shipping

我有一个Woocommerce One Page Checkout网站,目前有一个产品。到目前为止一切正常,但由于某种原因,我没有看到运费成本显示。

价格计算是正确的,当我进入paymentportal时,运费成本会被添加到总价格中,但不会显示运费。

在搜索解决方案时提供一些见解: 渲染所有数据的行为发生在 /woocommerce/templates/checkout/review-order.php

有人称之为:

<?php wc_cart_totals_shipping_html(); ?>

此功能可在 /woocommcerce/includes/wc-cart-functions.php

中找到

正在执行的代码是:

/**
 * Get shipping methods
 *
 * @access public
 * @return void
 */
function wc_custom_cart_totals_shipping_html() {

    $packages = WC()->shipping->get_packages();
    foreach ( $packages as $i => $package ) {
        $chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';

        wc_get_template( 'cart/cart-shipping.php', array( 'package' => $package, 'available_methods' => $package['rates'], 'show_package_details' => ( sizeof( $packages ) > 1 ), 'index' => $i, 'chosen_method' => $chosen_method ) );
    }
}

问题在于$packages = WC()->shipping->get_packages(); 返回一个空数组。

/woocommerce/includes/class-wc-shipping.php 中的函数get_packages如下:

/**
     * Get packages
     * @return array
     */
    public  function get_packages() {
        return $this->packages;
    }

因此未设置属性$ this-&gt;包。此属性在函数calculate_shipping中设置在同一文件 /woocommerce/includes/class-wc-shipping.php

我尝试在$packages = WC()->shipping->get_packages();之前调用该函数,但这不起作用。

有人可以帮助我吗?请注意,我在Wordpress编程方面没有太多经验。

亲切的问候,

皮姆

1 个答案:

答案 0 :(得分:6)

如果出现同样的问题,但过了一会儿就设法解决了,你需要打电话

WC()->cart->calculate_totals();

这将填充包,然后您可以使用

wc_cart_totals_shipping_html();

在任何地方显示可用的送货方式列表