嗨,我在做一个商店定位器。我有一个自定义的“诊所”贴子,在那里我保存诊所详细信息(地址,…,lat,lng)。每次发布新诊所时,我都会将post\\U id、lat和lng保存在自定义表“lat\\U lng\\U post”中。
我可以使用filter post\\u搜索特定距离内的诊所,其中以这种方式:
add_filter( \'posts_where\' , \'location_posts_where\' )
function location_posts_where( $where )
{
// $lat and $ lng are latitude and longitude of the searched point
global $wpdb;
$where .= " AND $wpdb->posts.ID IN (SELECT post_id FROM lat_lng_post
WHERE
(6371 * acos( cos( radians(" . $lat . ") )
* cos( radians( lat ) )
* cos( radians( lng )
- radians(" . $lng . ") )
+ sin( radians(" . $lat . ") )
* sin( radians( lat ) ) ) ) <= 150
ORDER BY
( 6371 * acos( cos( radians(" . $lat . ") )
* cos( radians( lat ) )
* cos( radians( lng )
- radians(" . $lng . ") )
+ sin( radians(" . $lat . ") )
* sin( radians( lat ) ) ) ) ASC)";
return $where;
}
我在固定距离(150公里)内得到诊所,但没有按距离订购。它们根据发布日期显示。我尝试将orderby设置为none:
$args = array (
\'post_type\' => \'clinica\',
\'orderby\' => \'none\'
);
但它没有起作用。如何强制按查询中设置的order by规则排序?