如何获取 WooCommerce 运输方式成本和设置?
How to get WooCommerce shipping methods cost and settings?
我正在尝试获取所有运输方式及其费率和标题。但是当我使用 WC()->shipping->get_shipping_methods()
时,它只会 return 清空费率数组和空标题字符串。这是转储:
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)
我试图 Google 这个问题,但没有任何帮助。
有谁知道可能是什么问题?
非常感谢!
因为WC()->shipping->get_shipping_methods()
不加载每个运输区域设置的运输方式,它只加载您可以在任何运输区域设置的所有可用运输方式, 具有所有默认值和可用的设置字段…
Remember that shipping methods costs and settings are set by shipping zone and are related to locations (Region, country, state or postcode).
因此,由于每个运输区域的运输方式费率不同,您需要首先获取在运输部分设置中设置的一个或所有运输区域。
然后您可以从配送区域获取为其设置的所有配送方式费率,例如:
// 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);
}
}
这一次,正如您将看到的,您将获得在配送区域中设置的每种配送方式费率的所有设置(自定义标签、成本和其他设置)。
我正在尝试获取所有运输方式及其费率和标题。但是当我使用 WC()->shipping->get_shipping_methods()
时,它只会 return 清空费率数组和空标题字符串。这是转储:
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)
我试图 Google 这个问题,但没有任何帮助。 有谁知道可能是什么问题?
非常感谢!
因为WC()->shipping->get_shipping_methods()
不加载每个运输区域设置的运输方式,它只加载您可以在任何运输区域设置的所有可用运输方式, 具有所有默认值和可用的设置字段…
Remember that shipping methods costs and settings are set by shipping zone and are related to locations (Region, country, state or postcode).
因此,由于每个运输区域的运输方式费率不同,您需要首先获取在运输部分设置中设置的一个或所有运输区域。
然后您可以从配送区域获取为其设置的所有配送方式费率,例如:
// 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);
}
}
这一次,正如您将看到的,您将获得在配送区域中设置的每种配送方式费率的所有设置(自定义标签、成本和其他设置)。