Php 获取所有免费配送区域包括默认区域;“世界其他地区”;
我想得到所有的数据(区域名称,区域id)当有免费送货区。我使用了:Php 获取所有免费配送区域包括默认区域;“世界其他地区”;,php,wordpress,woocommerce,shipping,zone,Php,Wordpress,Woocommerce,Shipping,Zone,我想得到所有的数据(区域名称,区域id)当有免费送货区。我使用了: $delivery_zones = WC_Shipping_Zones::get_zones(); foreach ((array) $delivery_zones as $key => $the_zone ) { echo $the_zone['zone_name']; } print_r($delivery_zones); 但是,它总是返回结果,而不会返回世界其他地区的结果。如何使用所有免费配送区获取所有数据?我
$delivery_zones = WC_Shipping_Zones::get_zones();
foreach ((array) $delivery_zones as $key => $the_zone ) {
echo $the_zone['zone_name'];
}
print_r($delivery_zones);
但是,它总是返回结果,而不会返回世界其他地区的结果。如何使用所有免费配送区获取所有数据?我在该区域和类的源代码中搜索了一些后,得到了您的答案。您了解到默认类的ID=0 我先试过这个:
$default_zone = new WC_Shipping_Zone(0);
print_r($default_zone);
我得到了这个数组:
WC\u Shipping\u Zone对象([\u数据:受保护]=>数组([Zone\u id]=>0[Zone\u name]=>世界其他地区[/strong>[Zone\u order]=>0[Zone\u locations]=>Array())[\u位置更改:WC\u Shipping\u Zone:private]=>[\u缓存\u组:受保护]=>[\u元类型:受保护]=>post[元数据的对象id\u字段:受保护]=>=>数组()[[内部\元\键:受保护]=>数组()) 宾果1!数据在那里,我得到了默认配送区对象,但它受到保护,并且无法通过foreach循环或其他方式访问 如果你看,你会发现它扩展了类
因此,我尝试对该对象使用WC_数据方法,方法如下:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_data = $default_zone->get_data();
print_r($default_zone_data);
宾果2!!!它输出sam阵列,但这次不受保护且不可访问
所以答案是:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_data = default_zone->get_data();
$default_zone_id = $default_zone_data->zone_id;
$default_zone_order = $default_zone_data-> zone_order;
$default_zone_locations = $default_zone_data-> zone_locations;
$default_zone_meta_data = $default_zone_data-> meta_data;
// AND TO FINISH THE THE NAME!!!
$default_zone_name = $default_zone_data->zone_name;
echo $default_zone_name
echo$default\u zone\u name
的输出是世界其他地区的(再次宾果!!!)
您还可以使用和其他方法来获取所需的数据:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_formatted_location = $default_zone->get_formatted_location();
$default_zone_shipping_methods$ = default_zone->get_shipping_methods();
// And so on …
我得到了你的答案后,在一些搜索,也在源代码的类。您了解到默认类的ID=0 我先试过这个:
$default_zone = new WC_Shipping_Zone(0);
print_r($default_zone);
我得到了这个数组:
WC\u Shipping\u Zone对象([\u数据:受保护]=>数组([Zone\u id]=>0[Zone\u name]=>世界其他地区[/strong>[Zone\u order]=>0[Zone\u locations]=>Array())[\u位置更改:WC\u Shipping\u Zone:private]=>[\u缓存\u组:受保护]=>[\u元类型:受保护]=>post[元数据的对象id\u字段:受保护]=>=>数组()[[内部\元\键:受保护]=>数组()) 宾果1!数据在那里,我得到了默认配送区对象,但它受到保护,并且无法通过foreach循环或其他方式访问 如果你看,你会发现它扩展了类
因此,我尝试对该对象使用WC_数据方法,方法如下:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_data = $default_zone->get_data();
print_r($default_zone_data);
宾果2!!!它输出sam阵列,但这次不受保护且不可访问
所以答案是:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_data = default_zone->get_data();
$default_zone_id = $default_zone_data->zone_id;
$default_zone_order = $default_zone_data-> zone_order;
$default_zone_locations = $default_zone_data-> zone_locations;
$default_zone_meta_data = $default_zone_data-> meta_data;
// AND TO FINISH THE THE NAME!!!
$default_zone_name = $default_zone_data->zone_name;
echo $default_zone_name
echo$default\u zone\u name
的输出是世界其他地区的(再次宾果!!!)
您还可以使用和其他方法来获取所需的数据:
$default_zone = new WC_Shipping_Zone(0);
$default_zone_formatted_location = $default_zone->get_formatted_location();
$default_zone_shipping_methods$ = default_zone->get_shipping_methods();
// And so on …
感谢@LoicTheAztec的回复。在读了他的答案后,我找到了解决问题的办法。全部内容如下:
$zones = array();
// Rest of the World zone
$zone = new \WC_Shipping_Zone( 0 );
$zones[$zone->get_zone_id()] = $zone->get_data();
$zones[$zone->get_zone_id()]['formatted_zone_location'] = $zone->get_formatted_location();
$zones[$zone->get_zone_id()]['shipping_methods'] = $zone->get_shipping_methods();
// Add user configured zones
$zones = array_merge( $zones, WC_Shipping_Zones::get_zones() );
foreach ( $zones as $each_zone ) {
$zone_name = $each_zone['zone_name'];
$shipping_methods = $each_zone['shipping_methods'];
$arr_shipping_methods = json_decode( json_encode( $shipping_methods ), true );
foreach ( $arr_shipping_methods as $free_shipping ) {
if ( $free_shipping['id'] == 'free_shipping' ) {
$zone_id = $each_zone['zone_id'];
} else {
echo '';
}
}
}
感谢@LoicTheAztec的回复。在读了他的答案后,我找到了解决问题的办法。全部内容如下:
$zones = array();
// Rest of the World zone
$zone = new \WC_Shipping_Zone( 0 );
$zones[$zone->get_zone_id()] = $zone->get_data();
$zones[$zone->get_zone_id()]['formatted_zone_location'] = $zone->get_formatted_location();
$zones[$zone->get_zone_id()]['shipping_methods'] = $zone->get_shipping_methods();
// Add user configured zones
$zones = array_merge( $zones, WC_Shipping_Zones::get_zones() );
foreach ( $zones as $each_zone ) {
$zone_name = $each_zone['zone_name'];
$shipping_methods = $each_zone['shipping_methods'];
$arr_shipping_methods = json_decode( json_encode( $shipping_methods ), true );
foreach ( $arr_shipping_methods as $free_shipping ) {
if ( $free_shipping['id'] == 'free_shipping' ) {
$zone_id = $each_zone['zone_id'];
} else {
echo '';
}
}
}
谢谢你的回答,但是你能帮我得到免费送货方式的区域名称和区域id吗?请告知你的答案。我找到了获得所有价值的方法。我将在这里发布答案并添加您的skype。非常感谢你!谢谢你的回答,但是你能帮我得到免费送货方式的区域名称和区域id吗?请告知你的答案。我找到了获得所有价值的方法。我将在这里发布答案并添加您的skype。非常感谢你!我知道你的帮助,非常感谢。我对你的答案投了赞成票。我知道你的帮助,非常感谢。我投票赞成你的答案。