Php 如何在自定义模板中获取所有woocommerce配送包

Php 如何在自定义模板中获取所有woocommerce配送包,php,wordpress,class,woocommerce,Php,Wordpress,Class,Woocommerce,我需要让客户编辑他们待定的付款单。默认情况下,woocommerce仅允许更改付款方式。因此,我为这个特性创建了一个自定义模板 现在我遇到的问题是,我无法在模板中获取装运包。 以下是我从wc_cart_totals_shipping_html()改编的代码: print\r($packages)给了我空数组。但在结帐页面上,它运行良好。 知道为什么吗?或者,通过其他方法获取装运包?请尝试此方法- global $woocommerce; $customerZipCode = 75098; $

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

现在我遇到的问题是,我无法在模板中获取装运包。 以下是我从wc_cart_totals_shipping_html()改编的代码:

print\r($packages)给了我空数组。但在结帐页面上,它运行良好。 知道为什么吗?或者,通过其他方法获取装运包?

请尝试此方法-

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的运输方法,这非常有效。
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);