【问题标题】:How to get all woocommerce shipping packages in a custom template如何在自定义模板中获取所有 woocommerce 运输包裹
【发布时间】:2015-05-29 16:33:39
【问题描述】:

我需要让客户编辑他们的待处理付款订单。默认情况下,woocommerce 只允许更改付款方式。因此,我为此功能创建了一个自定义模板。

我现在遇到的问题是我无法在模板中获取运输包裹。 这是我改编自 wc_cart_totals_shipping_html() 的代码:

$packages = WC()->shipping->get_packages();
print_r($packages);
foreach ( $packages as $i => $package ) {
    //blah blah blah        
}

print_r($packages) 给了我空数组。但是在结帐页面上,它工作正常。 知道为什么吗?或者,通过其他方式获取运输包裹?

【问题讨论】:

    标签: php wordpress class woocommerce


    【解决方案1】:

    请试试这个 -

    global $woocommerce;
    
    $customerZipCode =  75098;
    $zipResultArr = csd_check_zip_and_state($customerZipCode);
    $bh_packages =  $woocommerce->cart->get_shipping_packages();
    
    $bh_packages[0]['destination']['state'] = $zipResultArr['state'];
    $bh_packages[0]['destination']['postcode'] = $customerZipCode ;
    $bh_packages[0]['destination']['city'] = $zipResultArr['city'];
    $bh_packages[0]['destination']['address'] = '';
    $bh_packages[0]['destination']['address_2'] = '';
    
    //Calculate costs for passed packages
    $bh_shipping_methods = array();
    
    foreach( $bh_packages as $bh_package_key => $bh_package ) {
        $bh_shipping_methods[$bh_package_key] = $woocommerce->shipping->calculate_shipping_for_package($bh_package, $bh_package_key);
    }
    $shippingArr = $bh_shipping_methods[0]['rates'];
    if(!empty($shippingArr)) {
        $response = array();
        foreach ($shippingArr as $value) {
            $shipping['label'] = $value->label;
            $shipping['cost'] = $value->cost;
            $response['shipping'][] = $shipping;
        }
    }
    
    // This is your shipping 
    print_r($response);
    

    【讨论】:

    • 你太棒了,这个信息很难找到。就我而言,当购物车为空时,我正在寻找 WooCommerce 运输方式,这非常有效。
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2021-06-10
    • 2014-05-11
    • 1970-01-01
    • 2011-01-05
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多