我有一个WooCommerce在线商店,提供大多数产品的运送。部分产品适合当地皮卡。我已尝试在成本等于零的运输区域上设置课程,并在产品上分配课程。但到目前为止,结帐仍然显示运费。有什么方法可以让某些产品没有运费吗?
答案 0 :(得分:1)
如果您要搜索插件解决方案,请尝试WooCommerce Conditional Shipping and Payments。通过使用此插件,您可以添加对某些产品或产品类别的限制。
答案 1 :(得分:1)
您可能希望查看woocommerce_package_rates
过滤器,该过滤器允许您过滤客户可用的一组送货选项。一个例子是这样的:
<?php
// add this snippet to functions.php:
add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
// examine $package for products. this could be a whitelist of specific
// products that you wish to be treated in a special manner...
$special_ids = array( 1, 2, 3, 4, 5 );
$special_product_present = false;
foreach ( $package['contents'] as $line_item ) {
if ( in_array( $line_item['product_id'], $special_ids ) ) {
$special_product_present = true;
}
}
$rates = array_filter( $rates, function ( $r ) use ( $special_product_present ) {
// do some logic here to return true (for rates that you wish to be displayed), or false.
// example: only allow shipping methods that start with "local"
if ( $special_product_present ) {
return preg_match( '/^local/', strtolower( $r->label ) );
} else {
return true;
}
} );
return $rates;
}, 10, 2 );
此blog post here使用此挂钩显示了该想法的一些变体,包括如何根据购物车价值,客户所在国家/地区,购物车中的商品数量等自定义可用费率。这里是源代码: https://github.com/woocommerce/woocommerce/blob/v2.2.3/includes/class-wc-shipping.php#L366