1
我有一个搜索字段,它允许用户搜索地点和邮政编码。当用户输入搜索值时,我有两个隐藏的输入字段,根据用户选择填充经度和纬度。在Wordpress中更改搜索查询
我想运行一个查询其搜索与隐藏输入值来帖 - latitude
和longitude
和不什么类型的用户在
<form role="search" method="get" id="searchform" class="searchform" action="">
<div class="search">
<input type="text" value="" name="s" id="search-input" class="s" placeholder="Enter your Location or Postcode" />
<input type="hidden" value="profile" name="post_type" id="post_type" />
<input type="hidden" value="country" name="taxonomy" />
<input type="hidden" name="latitude" id="latitude" />
<input type="hidden" name="longitude" id="longitude"/>
<input type="submit" id="searchsubmit" value="Search" class="submit btn" />
</form>
我怎么能替换搜索查询完全与另一个查询搜索帖子根据用户选择的经纬度?
这是SQL查询,我想,以取代主查询:
SELECT SQL_CALC_FOUND_ROWS wp_posts. *
FROM wp_posts
WHERE 1 =1
AND wp_posts.ID
IN (
SELECT post_id
FROM lat_lng_post
WHERE (3959 * ACOS(COS(RADIANS(- 27.922459)) * COS(RADIANS(lat)) * COS(RADIANS(lng) - RADIANS(153.334793)) + SIN(RADIANS(- 27.922459)) * SIN(RADIANS(lat)))) <=125
)
LIMIT 0 , 30
我有一个函数准备好,但我不知道这WordPress的钩,我应该用它来改变搜索查询另一个without modifying the search template:
function custom_search()
{
global $wpdb;
if (is_search())
$latitude = filter_input(INPUT_GET, "latitude", FILTER_SANITIZE_STRING);
$longitude = filter_input(INPUT_GET, "longitude", FILTER_SANITIZE_STRING);
$radius = 125;
$sql = "SELECT SQL_CALC_FOUND_ROWS wp_posts. *
FROM wp_posts
WHERE 1 = 1
AND $wpdb->posts.ID IN (SELECT post_id FROM lat_lng_post WHERE
(3959 * acos(cos(radians(%f))
* cos(radians(lat))
* cos(radians(lng)
- radians(%f))
+ sin(radians(%f))
* sin(radians(lat)))) <= %s)";
$sql = $wpdb->prepare($sql, $latitude, $longitude, $latitude, $radius);
//$wpdb->show_errors();
$results = $wpdb->get_results($sql);
//$wpdb->print_error();
return $results;
}
任何帮助将不胜感激。
你能举个例子吗?因为我想彻底改变查询,而不仅仅是它的一部分。 – input
啊,对不起 - post_clausules会更好。查看更新的答案。 –