扩展WP查询&以$ post返回输出

时间:2014-05-07 12:35:55

标签: php mysql wordpress wp-query

我正在尝试创建一个活动网站。用户此时可以搜索其所选搜索位置的指定半径内的事件(使用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,以便它可以显示在前端?

0 个答案:

没有答案