Получите определенные пользовательские ключи полей из сообщения и поместите их в массив


У меня есть следующий код для поиска долготы и широты на основе настраиваемого поля при сохранении сообщения. Поля моего адреса (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');

Спасибо вам, Деон

Author: Deon, 2013-04-23

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