【问题标题】:Geocoding custom user meta in WordPress在 WordPress 中对自定义用户元进行地理编码
【发布时间】:2013-11-07 09:52:31
【问题描述】:

我正在使用User Front End Pro 提供前端注册表单。其中一行是地址,我想用它来显示所有用户的地图Geo Mashup

我有一个自定义字段保存到名为geocode_address 的用户元数据,然后我需要对其进行地理编码并将其输出到两个单独的字段纬度和经度。我找到了this for geocoding custom post data,并试图为用户元修改它,但它不起作用,并导致注册挂起。我做错了什么?

function geocode_address($user_id)
{
$custom_fields = get_user_meta();
if(isset($custom_fields["geocode_address"]) && !empty($custom_fields["geocode_address"][0]))
{
    $resp = wp_remote_get( "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($custom_fields["geocode_address"][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_user_meta($user_id, "latitude", $latitude);
            update_user_meta($user_id, "longitude", $longitude);
        }
    }
}
}
add_action('update_user_meta', 'geocode_address');

附带说明,Geomashup 具有对自定义字段进行地理编码的功能,但是当我输入“地理编码地址”时,它似乎不起作用...

【问题讨论】:

  • 您能否显示字段geocode_address 的示例值?
  • 样本值如下所示:“Vällebergsvägen 7 459 30 Ljungskile”

标签: wordpress geocoding wordpress-geo-mashup


【解决方案1】:

update_user_meta 动作有更多参数,第一个不是用户 ID:

add_action('update_user_meta', 'geocode_address', 10, 4 );

function geocode_address( $meta_id, $user_id, $meta_key, $meta_value )
{
    if( 'geocode_address' == $meta_key )
    {
        var_dump( $meta_value );
        die();
    }
}

那么,你用错了get_user_meta(),我们至少需要传递用户ID:get_user_meta($user_id, $key = '', $single = false);。但我怀疑你的情况不需要它。

至于 Geocode API,当我使用随机西班牙地址进行测试时,它返回了正确的响应:

$address = "gran via, madrid";
$resp = wp_remote_get( "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($address)."&sensor=false" );

【讨论】:

  • 恐怕我很难让它发挥作用(略高于我的天赋等级)。我确实设法让 WPUFP 自动对自定义字段字符串进行地理编码,这让我获得了 80% 的路径,但它以逗号分隔值的形式输出到单个字段,这让我想到了这个问题:stackoverflow.com/questions/19838810/…
  • 我相信你唯一的问题是如何处理$meta_valuevar_dumpdie 是为了帮助您调试和调整。
  • 好的,我现在有了。但它仍然无法正常工作:jsfiddle.net/LRR7y(对于 cmets 来说太长了)-我真的不是 PHP 人,所以我正在为此苦苦挣扎......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多