【问题标题】:How to get custom shipping method packages from WooCommerce如何从 WooCommerce 获取自定义运输方式包
【发布时间】:2021-05-04 01:13:29
【问题描述】:

我根据WooCommerce Shipping Method API documentation编写了自定义运输方式。它工作正常,并且在计算购物车和结帐页面上的价格时正在做我需要的事情。此外,我在结帐页面上有验证功能,并且我正在获取包,然后将其与选择的方法进行比较。

代码如下:

$packages = WC()->shipping->get_packages();
$chosen_methods = wc_get_chosen_shipping_method_ids();

if (is_array($chosen_methods) && (in_array('new_standard', $chosen_methods) || in_array('new_fast', $chosen_methods) || in_array('new_express', $chosen_methods))) {        
    foreach ($packages as $i => $package) {         
        if ($chosen_methods[$i] != 'new_standard' && $chosen_methods[$i] != 'new_fast' && $chosen_methods[$i] != 'new_express') {
            continue;               
        }           
        // Here some validation code
        if ($package['destination']['city'] == 'Paris') {
            // Bla bla bla
        }
    }       
}

您能帮我理解为什么我需要为一个订单提供多个包裹吗?为什么我要获取运输方法的数组 wc_get_chosen_shipping_method_ids() 而不是获取方法的一个 id。为什么我使用 foreach 循环到达那里,当它可以像这样更直接:

// This is just example code of mine for showcase
$package = WC()->shipping->get_package();
if ($package['id'] == 'new_standard' || $package['id'] == 'new_fast' || $package['id'] == 'new_express') {
// validation code here
}

还有一个主要问题是:我如何获取包并将它们与 WC_Order 一起使用。我需要调用一些外部 API,为此我需要执行上述相同的操作。

【问题讨论】:

    标签: php wordpress woocommerce package shipping-method


    【解决方案1】:

    因为在使用一些 3rd Party shipping 相关插件或一些自定义代码时,您可以将购物车拆分为多个运输包,因此您可以有多种运输方式(每个运输包一种)。

    假设您销售的产品可能很重,也可能不重……假设您允许通过飞机、船和卡车运输……有些物品可以通过飞机运输,而另一些则不取决于它们的重量。
    因此,当购物车中的物品混杂(重型和普通)时,购物车将被拆分为不同的运输包。

    这就是为什么有一系列选择的运输方式和一系列运输包裹的原因(即使您不拆分购物车或不使用这些插件)。

    因此,只有少数 WooCommerce 商店使用多个运输包裹,用于混合购物车商品。

    WooCommerce 订单运输方式的相关主题:

    【讨论】:

    • 非常感谢 LoicTheAztec。现在我很清楚为什么有多个包。但我无法弄清楚一件事。如何从发货项目中获取产品 ID、重量和数量?
    • @serginisto 在运送物品时,您只有所选运送方式的详细信息……所以要获得重量和数量,您将从订单项(正常订单项)中获得……
    • 我知道了,但是如果选择了多种运输方式,并且为购物车中的几个产品选择了我的运输方式,该怎么办。我需要获取选择了我的运输方式的产品的信息。可能吗?提前致谢
    • @serginisto 我唯一能说的是,用于运输方式的产品列在订单项目运输名称中......
    猜你喜欢
    • 2022-11-02
    • 2021-06-10
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多