Получите определенные пользовательские ключи полей из сообщения и поместите их в массив
У меня есть следующий код для поиска долготы и широты на основе настраиваемого поля при сохранении сообщения. Поля моего адреса (street_1, город и штат) разделены. Я искал и думал, что могу поместить значения из этих отдельных мета-ключей в массив и передать их по URL-адресу. У меня работает значение штата, но мне нужен весь адрес. Я перепробовал много разных способов и теперь прошу о помощи. Любые подсказки будут оценены по достоинству.
Здесь это код:
function geocode_address($post_id)
{
$custom_fields = get_post_custom();
if(isset($custom_fields['state']) && !empty($custom_fields['state'][0]))
{
$resp = wp_remote_get( "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($custom_fields['state'][0])."&sensor=false" );
if ( 200 == $resp['response']['code'] ) {
$body = $resp['body'];
$data = json_decode($body);
if($data->status=="OK"){
$latitude = $data->results[0]->geometry->location->lat;
$longitude = $data->results[0]->geometry->location->lng;
update_post_meta($post_id, "latitude", $latitude);
update_post_meta($post_id, "longitude", $longitude);
}
}
}
}
add_action('save_post', 'geocode_address');
Спасибо вам, Деон
1
1 answers
Нет необходимости помещать их в массив. В соответствии с документацией Google вы должны просто отделить различные части адреса в URL-адресе, как стандартный (американский) адрес в формате.
// Example taken from google's docs:
$state = 'CA';
$street = 'Mountain View';
$address = '1600 Amphitheatre Parkway';
function geocode_address($post_id)
{
$custom_fields = get_post_custom();
// just set $city, $state and $address to the appropriate custom field variables here
if(isset($custom_fields['state']) && !empty($custom_fields['state'][0]))
{
$resp = wp_remote_get( "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($address . ',' . $city . ',' .$state)."&sensor=false" );
if ( 200 == $resp['response']['code'] ) {
$body = $resp['body'];
$data = json_decode($body);
if($data->status=="OK"){
$latitude = $data->results[0]->geometry->location->lat;
$longitude = $data->results[0]->geometry->location->lng;
update_post_meta($post_id, "latitude", $latitude);
update_post_meta($post_id, "longitude", $longitude);
}
}
}
}
add_action('save_post', 'geocode_address');
2
Author: Andrew Bartel, 2013-04-23 01:12:30