問題描述
我正在嘗試獲取所有運輸方式及其費率和標題.但是當我使用 WC()->shipping->get_shipping_methods()
時,它只會返回空的費率數組和空的標題字符串.這是一個轉儲:
I'm trying to get all shipping methods, with their rates and title. But when i use WC()->shipping->get_shipping_methods()
it will only return empty rates array, and empty title string. Here is a dump:
array (size=3)
'flat_rate' =>
object(WC_Shipping_Flat_Rate)[1861]
protected 'fee_cost' => string '' (length=0)
public 'supports' =>
array (size=3)
0 => string 'shipping-zones' (length=14)
1 => string 'instance-settings' (length=17)
2 => string 'instance-settings-modal' (length=23)
public 'id' => string 'flat_rate' (length=9)
public 'method_title' => string 'Flat rate' (length=9)
public 'method_description' => string 'Lets you charge a fixed rate for shipping.' (length=42)
public 'enabled' => string 'yes' (length=3)
public 'title' => string '' (length=0)
public 'rates' =>
array (size=0)
empty
public 'tax_status' => string '' (length=0)
public 'fee' => null
public 'minimum_fee' => null
public 'instance_id' => int 0
public 'instance_form_fields' =>
array (size=3)
'title' =>
array (size=5)
...
'tax_status' =>
array (size=5)
...
'cost' =>
array (size=7)
...
public 'instance_settings' =>
array (size=0)
empty
public 'availability' => null
public 'countries' =>
array (size=0)
empty
public 'plugin_id' => string 'woocommerce_' (length=12)
public 'errors' =>
array (size=0)
empty
public 'settings' =>
array (size=4)
'title' => string '' (length=0)
'tax_status' => string '' (length=0)
'cost' => string '' (length=0)
'type' => string 'class' (length=5)
public 'form_fields' =>
array (size=0)
empty
protected 'data' =>
array (size=0)
empty
public 'cost' => string '' (length=0)
public 'type' => string 'class' (length=5)
我試圖用谷歌搜索這個問題,但沒有任何幫助.有誰知道可能是什么問題?
I tried to Google the issue, but nothing really helped. Does anyone know what could be the issue?
非常感謝!
推薦答案
因為 WC()->shipping->get_shipping_methods()
不會加載在每個運輸區域,它只加載您可以在任何運輸區域設置的所有可用運輸方式,以及所有默認值和可用的設置字段......
Because WC()->shipping->get_shipping_methods()
doesn't load the shipping methods that are set on each shipping zone, it just loads all available shipping methods that you can set in any shipping zone, with all default values and available fields for settings…
請記住,運輸方式成本和設置按運輸區域設置,并且與位置(地區、國家/地區、州或郵政編碼)相關.
Remember that shipping methods costs and settings are set by shipping zone and are related to locations (Region, country, state or postcode).
因此,由于每個送貨區域的送貨方式費率不同,您需要首先獲得在送貨部分設置中設置的一個或所有送貨區域.
So as shipping methods rates are different for each shipping zone you need to get first, one or all shipping Zones that are set in shipping section settings.
然后,您可以從運輸區域獲得為其設置的所有運輸方式費率,例如:
Then from a shipping zone you can get all shipping methods rates that is set for it like:
// Get all your existing shipping zones IDS
$zone_ids = array_keys( array('') + WC_Shipping_Zones::get_zones() );
// Loop through shipping Zones IDs
foreach ( $zone_ids as $zone_id )
{
// Get the shipping Zone object
$shipping_zone = new WC_Shipping_Zone($zone_id);
// Get all shipping method values for the shipping zone
$shipping_methods = $shipping_zone->get_shipping_methods( true, 'values' );
// Loop through each shipping methods set for the current shipping zone
foreach ( $shipping_methods as $instance_id => $shipping_method )
{
// The dump of protected data from the current shipping method
var_dump($shipping_method);
}
}
這一次,正如您將看到的,您將獲得在配送區域中設置的每種配送方式費率的所有設置(自定義標簽、成本和其他設置).
This time, as you will see, you get all settings (custom label, costs and other settings) for each shipping method rate set in a shipping zone.
這篇關于如何獲得 WooCommerce 運輸方式的成本和設置?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!