WooCommerce-特定产品的装运类别

WooCommerce-特定产品的装运类别,woocommerce,Woocommerce,我们的客户目前销售人造草,并根据订单在英国的装运地点设置了3个不同的装运区 他们现在决定也销售配件,但他们希望通过以下方式发货: 在全国范围内购买这些配件的统一交付成本 如果客户仅购买配件(无配件),则为10英镑 销售)。如果客户在购买草地销售和配件 同时,将只收取送草费 添加,因为它们将同时交付 这可能吗?我找到了一个解决方案,我在我的子主题中的functions.php文件中添加了以下代码: add_filter('woocommerce_package_rates', 'specific_

我们的客户目前销售人造草,并根据订单在英国的装运地点设置了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;
}

如果购物车中有草制品,则会隐藏配件配送选项。

您已经尝试了哪些方法来实现您的需求?你已经有主意了吗?仅仅要求一个解决方案不太受欢迎,特别是如果你用一个解决方案赚钱的话