使用woocommerce_calculate_totals钩子将“本地取件”运费设置为0

时间:2018-01-23 10:20:45

标签: php wordpress woocommerce cart shipping

我们修改了Woocommerce中的结帐流程,以便客户在送货或商店取货之间进行选择。

我正在使用 woocommerce_calculate_totals 来检查客户选择的方法,如果用户选择了商店提货,我想将运费设置为0

我正在使用以下代码。

add_action('woocommerce_calculate_totals', function($order) {
    /* 
     * We need to check if the user selected local delivery, which would be added to the request string 
     * If no store pick-up is selected, then we don't need to display shipping calculations
     */ 
    global $woocommerce;

    if(!empty($_POST['post_data'])) {
        if(strpos($_POST['post_data'], 'local-delivery')) {

        } else {
            $woocommerce->cart->shipping_total = 0.00;
            $woocommerce->cart->shipping_tax_total = 0.00; 
        } 
    }
}, 40, 1);

如果用户选择本地送货,则会计算运费。但是,如果用户切换回提取,Woocommerce不会消除运费。

有什么我想念的吗?

1 个答案:

答案 0 :(得分:3)

您不需要任何代码 ...可以通过WooCommerce设置完成。因此,您的送货设置中将有2种送货方式用于送货区域:

  • “本地交付”(带成本)的“统一费率”送货方式
  • “店铺取货”的“本地取件”送货方式(免费)

对于“商店提货”(“本地提货”运输方式):

enter image description here

您将设置为0

enter image description here

然后你会进入购物车并结帐:

enter image description here