如何以编程方式设置WooCommerce中的运费金额

时间:2017-04-11 00:53:35

标签: wordpress woocommerce

我正在创建一个Wordpress插件,用于处理WooCommerce的发货和交付。

我想简单地告诉我的WooCommerce cart(或order),这就是运费金额。

我试过直接设置WC()->cart->shipping_amount = $amount;
还做->add_fee( $shippingServiceName, $amount );
在这两种情况下,购物车上的shipping_amount都保留在0

如何设置运费?

2 个答案:

答案 0 :(得分:6)

我最终直接在订单上而不是在购物车上设置它;
这是我在“完全购买”处理中创建和使用的方法:

function addShippingToOrder( $order, $shipping_amount, $shipping_name ) {

        $shipping_tax = array(); 
        $shipping_rate = new WC_Shipping_Rate( '', $shipping_name, 
                                      $shipping_amount, $shipping_tax, 
                                      'custom_shipping_method' );
        $order->add_shipping($shipping_rate);

}

当我在购物车逻辑中时,我还需要保存运费金额,然后在我处于订单逻辑时检索它,并且我使用自定义购物车“会话”变量执行此操作:
 WC()->session->set( 'my_custom_shipping_amount', $amt );
 WC()->session->get( 'my_custom_shipping_amount' )

这是一个非常简单的答案,但我花了最长的时间才弄明白 - 我甚至最终创建了一个插件,尤其是调试对WC_Orders的更改:WooCommerce Order Debugger Plugin

答案 1 :(得分:1)

尝试以下代码

add_filter('woocommerce_package_rates', 'apply_static_rate', 10, 2);
function apply_static_rate($rates, $package)
    {                   
        foreach($rates as $key => $value) {
            $rates[$key]->cost  =   150;    // your amount                  

        }
        return $rates;
}