У меня есть сайт WordPress, использующий WooCommerce с включенной функцией доставки. Все, что он делает, — это находит адрес доставки пользователя и определяет расстояние между клиентом и складом, основываясь на пробеге, применяемом различными правилами доставки, т.е. бесплатной доставкой.
Однако у меня есть проблема, когда кто-то меняет свой адрес доставки в моей учетной записи или через бэкэнд, а затем переходит к оформлению заказа, он по-прежнему использует старый почтовый индекс. Я предполагаю, что это кешируется в 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;
}
Задача ещё не решена.
Других решений пока нет …