我正在尝试创建一个活动网站。用户此时可以搜索其所选搜索位置的指定半径内的事件(使用Google地理编码)。
我有一个自定义数据库查询,工作正常,除了我希望事件的距离也显示在网站的前端,因此用户知道每个事件离他们有多远。
这是我目前的自定义查询功能:
function location_posts_where( $where ) {
// if user has input a location
if( isset($_POST['where']) != '' ) :
// check the geo locaton of user
$geoURL = "http://freegeoip.net/json/". $_SERVER['REMOTE_ADDR'] .'';
$geo = json_decode(file_get_contents($geoURL), true);
// Geocode input value + users country code
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($_POST['where'])."+".$geo[country_code]."&sensor=false";
$location = json_decode(file_get_contents($url), true);
// store lat and long of searched location
$Slat = $location[results][0][geometry][location][lat];
$Slng = $location[results][0][geometry][location][lng];
// if use hasn't unput a location
else :
// get location of user
$url = "http://freegeoip.net/json/". $_SERVER['REMOTE_ADDR'] .'';
$geo = json_decode(file_get_contents($url), true);
// store lat and long of user location
$Slat = $geo[latitude];
$Slng = $geo[longitude];
endif;
// Specify the co-ordinates that will form
// the centre of our search
$lat = $Slat;
$lng = $Slng;
$radius = $_POST['distance']; // (in miles)
// Append our radius calculation to the WHERE
$where .= " AND wp_posts.ID IN (SELECT post_id FROM lat_lng_post WHERE
( 3959 * acos( cos( radians(" . $lat . ") )
* cos( radians( lat ) )
* cos( radians( lng )
- radians(" . $lng . ") )
+ sin( radians(" . $lat . ") )
* sin( radians( lat ) ) ) ) <= " . $radius . ")";
// Return the updated WHERE part of the query
return $where;
}
此代码工作正常但是,之前我使用过wp_geo_posts插件,并且可以使用<?php echo $post->distance; ?>
使用此代码,$post
变量没有“距离”输出。有没有办法让它输出到$post
,以便它可以显示在前端?