从POST获取特定的定制字段键并放入数组

时间:2013-04-23 作者:Deon

我有以下代码可以在保存帖子时根据自定义字段查找经度和纬度。我的地址字段(street\\u 1、city和state)是单独的。我已经搜索并认为我可以将这些单独的元键中的值放入一个数组中,并将它们传递到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 个回复
最合适的回答,由SO网友:Andrew Bartel 整理而成

无需将它们放入数组中。根据google\'s documentation 您应该像标准(美国)格式的地址一样,将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\');

结束

相关推荐

populate array with posts

我想生成一个自定义帖子类型的数组,将其添加到选项数组中。我这样做是为了显示一个由自定义帖子类型填充的复选框组。我有这个阵列:\'options\' => array ( \'one\' => array ( \'label\' => \'Option One\', \'value\' => \'one\' ), \'two\' => array (