首页 > 解决方案 > WooCommerce - 特定产品的运输类别

问题描述

我们的客户目前销售人造草,并根据订单在英国的发货地点设置了 3 个不同的运输区。

他们现在决定也销售配件,但他们希望运输方式如下:

如果客户仅购买配件(无草销售),则在全国范围内购买这些配件的统一运费为 10 英镑。如果客户同时购买草销售和配件,则只需要添加草交付费用,因为它们将同时交付。

这可能吗?

标签: woocommerce

解决方案


我找到了解决方案,我在我的子主题中的 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;
}

如果购物车中有草产品,这将隐藏配件运输选项。


推荐阅读