woocommerce - WooCommerce - 特定产品的运输类别
问题描述
我们的客户目前销售人造草,并根据订单在英国的发货地点设置了 3 个不同的运输区。
他们现在决定也销售配件,但他们希望运输方式如下:
如果客户仅购买配件(无草销售),则在全国范围内购买这些配件的统一运费为 10 英镑。如果客户同时购买草销售和配件,则只需要添加草交付费用,因为它们将同时交付。
这可能吗?
解决方案
我找到了解决方案,我在我的子主题中的 functions.php 文件中添加了以下代码:
add_filter('woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2);
function specific_products_shipping_methods($rates, $package) {
$terms = array('grass');
$taxonomy = 'product_cat';
$method_instances_ids = array('flat_rate:9', 'flat_rate:10', 'flat_rate:11');
$found = false;
foreach($package['contents'] as $cart_item) {
if (has_term($terms, $taxonomy, $cart_item['product_id'])) {
$found = true;
break;
}
}
if (! $found) return $rates;
foreach($rates as $rate_id => $rate) {
if (in_array($rate_id, $method_instances_ids)) {
unset($rates[$rate_id]);
}
}
return $rates;
}
如果购物车中有草产品,这将隐藏配件运输选项。
推荐阅读
- uwp - 如何在 UWP 日历中手动输入日期?
- amazon-web-services - AWS cli 命令列出最后一次活动超过 180 天的所有 IAM 用户
- spring-data-mongodb - 将单声道与助焊剂相结合
- azure-active-directory - 为 Azure B2C 用户配置文件中的字段设置默认值
- linux - 如果找到关键字,则在行尾附加文件名的一部分
- laravel - 如何为循环中的每个项目调用多态
- python - 带有 argparsed 的 Python scrapy
- c# - 401 - 禁止:访问被拒绝。IIS
- apache-kafka - 手动刷新 Kafka Connect 接收器?
- java.util.scanner - 使用 Scanner 从同一类的两个对象中获取输入