WooCommerce结帐 - 如何为特定地址免费送货

时间:2015-12-22 03:07:00

标签: php wordpress plugins woocommerce checkout

以下代码允许特定产品免费送货:

    function wcs_my_free_shipping( $is_available ) {
    global $woocommerce;

    // set the product ids that are eligible
    $eligible = array( '360' );

    // get cart contents
    $cart_items = $woocommerce->cart->get_cart();

    // loop through the items looking for one in the eligible array
    foreach ( $cart_items as $key => $item ) {
        if( in_array( $item['product_id'], $eligible ) ) {
            return true;
        }
    }

    // nothing found return the default value
    return $is_available;
   }
   add_filter( 'woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20 );

我想要做的是允许免费送货,不是产品,而是送货地址中的特定街道和邮政编码组合。我找到了如何为登录用户检查这一点,但似乎无法在结帐时找到包含此信息的正确变量。任何帮助将不胜感激。

提前致谢, -ben

2 个答案:

答案 0 :(得分:0)

Woocommerce中已有送货区域。对于每个特定区域,您可以设置运输方式"统一费率"或者"免费送货"。您可以在Woocommerce->设置下查看。查找送货标签。

Screenshot for shipping tab

答案 1 :(得分:0)

是的,你可以,有一个额外的参数可以传递到这个钩子名称$ package 例如。

   add_filter( 'woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20,2 );

function wcs_my_free_shipping( $is_available, $package){
//Your code for free shipping  for a selected address found in $package
return $is_available
}

$ package 包含您输入的地址,因此您可以使用此地点为所选邮政编码或街道免费送货