我有一个使用WooCommerce的WordPress网站,并提供定制的运送功能。所有这一切都是找到用户的送货地址,并根据不同的运输规则适用的里程,即免费送货,计算出客户与仓库之间的距离。
但是我遇到的问题是,如果有人在我的帐户中或通过后端更改他们的送货地址,然后转到结帐时仍然使用旧的邮政编码。我假设这是在WooCommerce中缓存的吗?
这是一个能够解决距离的功能,任何有帮助的人都会很棒。
private function getDistanceAway() {
$distanceInMiles = null;
$customer = new WC_Customer();
if($customer->get_shipping_postcode()) {
$postcode = $customer->get_shipping_postcode();
} else {
$postcode = $customer->get_postcode();
}
$fromPostcode = str_replace(' ', '', get_option('woocommerce_free_delivary_location_postcode'));
$toPostcode= str_replace(' ', '', $postcode);
$result = array();
//call google api
$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$fromPostcode&destinations=$toPostcode&mode=car&language=en?EN&sensor=false&units=imperial";
$data = @file_get_contents($url);
$result = json_decode($data, true);
//calculate the distance away
if(isset($result['rows'][0]['elements'][0]['distance']['text'])) {
$distanceInMiles = intval(str_replace(' mi', '', $result['rows'][0]['elements'][0]['distance']['text']));
}
return $distanceInMiles;
}