WooCommerce可变产品的发货限制

时间:2019-05-16 作者:Klettseb

我有一个关于WooCommerce运输限制的问题。我的客户正在销售一款有4种变体的产品。

在这4种变型中,只有1种可以国际运输,其他3种不能。预期的结果是,如果客户选择了能够国际运输的变型,那么如果选择了其他3种/在购物车中的任何一种,那么就可以了。

有什么办法可以帮你安排吗?到目前为止,我已经尝试了WooCommerce的有条件配送模块,但无法使其正常工作。

任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

这是一件复杂的事情……你可以做的是检查购物车项目的允许装运国家,显示错误通知,并避免在客户国家与所有其他产品变体的允许国家不匹配时结帐。

下面为您的其他产品变体定义允许的可发货变体ID(国际)和允许的基本国家代码:

add_action( \'woocommerce_check_cart_items\', \'check_cart_items_for_shipping\' );
function check_cart_items_for_shipping() {
    $allowed_variation_id = \'513\'; // Here defined the allowed Variation ID
    $allowed_country      = \'US\'; // Here define the allowed shipping country for all variations

    $shipping_country = WC()->customer->get_shipping_country();
    $countries        = WC()->countries->get_countries();

    // Loop through cart items
    foreach(WC()->cart->get_cart() as $cart_item ) {
        // Check cart item for defined product Ids and applied coupon
        if( $shipping_country !== $allowed_country && $cart_item[\'variation_id\'] !== $allowed_variation_id ) {
            wc_clear_notices(); // Clear all other notices

            // Avoid checkout displaying an error notice
            wc_add_notice( sprintf( __(\'The product "%s" can not be shipped to %s.\'),
                $cart_item[\'data\']->get_name(),
                $countries[$shipping_country]
            ), \'error\' );
            break; // stop the loop
        }
    }
}
代码进入函数。活动子主题(或活动主题)的php文件。已测试并正常工作。

enter image description here

相关推荐