如何在用户元关键字和元值中按经纬度搜索用户

时间:2015-09-16 作者:Khursheed Alam

我有两个元关键字名称(纬度和经度)wp_usermeta 以及它的价值。我想根据纬度和经度搜索50或100公里左右的所有用户。如何按半径搜索?

1 个回复
SO网友:HU ist Sebastian

嗯,有一种非常令人困惑的方法来获取另一点半径内的点。

$center_lat = $_GET["lat"]; //insert the lat of where you are
$center_lng = $_GET["lng"]; //insert the lng of where you are
$radius = $_GET["radius"]; //insert the radius of KM that you want to search

$multiplier=3959; //miles
$multiplier=($multiplier*1.609344); //use km instead

$users = get_users(array(\'meta_query\' => array(
                                               array(
                                                    \'key\' => \'latitude\',
                                                     \'value\' => \'XXX\', //insert a value just to be safe about https://core.trac.wordpress.org/ticket/23268
                                                      \'compare\' => \'EXISTS\' 
                                                      )
                                                )
                         ));

//now we got all our users that have latitude (i assume they also have longitude ^^)
$nearbyusers = array();
foreach($users as $user){
          $lat = get_user_meta($user->ID,\'latitude\',TRUE); //assuming the user latitude is a meta field named "latitude"
          $lng = get_user_meta($user->ID,\'longitude\',TRUE); //assuming the user longitude is a meta field named "longitude"
          $distance = ( $multiplier * acos( cos( deg2rad($center_lat) ) * cos( deg2rad( $lat ) ) * cos( deg2rad( $lng ) - deg2rad($center_lng) ) + sin( deg2rad($center_lat) ) * sin( deg2rad( $lat ) ) ) );
          if($distance<$radius) {
              $nearbyusers[] = $user;
          }
}
//now all near by users are in the array $nearbyusers. Do stuff with it! ;)
快乐的编码,

Kuchenundkakao

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+