Php WordPress同时运行两个查询

Php WordPress同时运行两个查询,php,mysql,wordpress,geolocation,Php,Mysql,Wordpress,Geolocation,这是一个事件网站,处理每个事件相对于用户位置的位置,并在搜索结果中显示距离 我使用扩展来允许我根据距离进行查询。但是,它不能很好地处理tax\u query之类的事情。因此,我想知道是否有一种方法可以运行WP\u GeoQuery来查询一定距离内的事件,然后通过正常的WP\u query来运行结果,以过滤正确的分类法和其他参数 以下是地理查询: $url = "http://freegeoip.net/json/". $_SERVER['REMOTE_ADDR'] .''; $geo = jso

这是一个事件网站,处理每个事件相对于用户位置的位置,并在搜索结果中显示距离

我使用扩展来允许我根据距离进行查询。但是,它不能很好地处理
tax\u query
之类的事情。因此,我想知道是否有一种方法可以运行
WP\u GeoQuery
来查询一定距离内的事件,然后通过正常的
WP\u query
来运行结果,以过滤正确的分类法和其他参数

以下是地理查询:

$url = "http://freegeoip.net/json/". $_SERVER['REMOTE_ADDR'] .'';
$geo = json_decode(file_get_contents($url), true);

$geo_query = new WP_GeoQuery(array(
    // location stuff
    'latitude' => $geo[latitude], // User's Latitude (optional)
    'longitude' => $geo[longitude], // User's Longitude (optional)

    // radius breaks the query if using tax_query too
    'radius' => 25 // Radius to select for in miles (optional)
));
下面是正常的WP_查询:

// add query for title
        function title_filter( $where, &$wp_query ) {
            global $wpdb;
            if ( $search_term = $wp_query->get( 'title_like' ) ) {
                $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( like_escape( $search_term ) ) . '%\'';
            }
            return $where;
        }
        add_filter( 'posts_where', 'title_filter', 10, 2 );



        // dates to and from
        function date_from( $from ) {
            $from = str_replace("meta_key = 'date_%_start-date'", "meta_key LIKE 'date_%_start-date'", $from);
            return $from;
        }
        add_filter('posts_where', 'date_from');

        function date_to( $to ) {
            $to = str_replace("mt1.meta_key = 'date_%_end-date'", "mt1.meta_key LIKE 'date_%_end-date'", $to);
            return $to;
        }
        add_filter('posts_where', 'date_to');





        // convert date to yyyymmdd
        $date1 = str_replace('/', '-', $_POST['when']);
        $when = date("Ymd", strtotime($date1));

        $date2 = str_replace('/', '-', $_POST['when-2']);
        $when2 = date("Ymd", strtotime($date2));

    ?>

    <h1>Search</h1>

    <div class="events">

        <?php $args = array(  
            // general
            'post_type' => 'event',
            'post_status' => 'publish',
            'posts_per_page' => 2,
            'paged' => $paged,

            // what input
            'title_like' => $_POST['what'],

            // category filter
            'tax_query' => array(
                array(
                    'taxonomy' => 'main-cat',
                    'field' => 'slug',
                    'terms' => $_POST['main-cat']
                )
            ),

            // date filter
            'meta_query' => array(
                'relation' => 'AND',
                array(
                    'key' => 'date_%_start-date',
                    'value' => $when,
                    'compare' => '>=',
                    'type' => 'DATE'
                ),
                array (
                    'key' => 'date_%_end-date',
                    'value' => $when2,
                    'compare' => '<=',
                    'type' => 'DATE'
                )
            ),


        );

        $temp = $wp_query;
        $wp_query = null;
        $wp_query = new WP_Query( $args );
        $wp_query->query('posts_per_page=2&post_type=event'.'&paged='.$paged);
//添加标题查询
函数标题\u过滤器($where,&$wp\u查询){
全球$wpdb;
如果($search\u term=$wp\u query->get('title\u like')){
$where.='和'$wpdb->posts.'.post_title像\''%'.esc_sql(像\'escape($search\u term)).%\';
}
返回$where;
}
添加过滤器('posts\u where','title\u filter',10,2);
//往返日期
功能日期\从($from){
$from=str_replace(“meta_key='date_%\u start-date'”,“meta_key类似'date_%\u start-date'”,$from);
返回$from;
}
添加_过滤器('posts_where','date_from');
功能日期_至($to){
$to=str_replace(“mt1.meta_key='date\uu%\u end-date'”,“mt1.meta_key类似'date\uu%\u end-date'”,$to);
将$100退还给;
}
添加_过滤器('posts_where','date_to');
//将日期转换为yyyymmdd
$date1=str_replace('/','-',$_POST['when']);
$when=日期(“Ymd”,标准时间($date1));
$date2=str_replace(“/”、“-”、$_POST['when-2']);
$when2=日期(“Ymd”,标准时间($date2));
?>
搜索

您是否尝试在循环之后重置查询,wp_reset_query()?我的意思是,我希望运行这两个查询并返回一组结果,而不是在一个页面上返回两组结果。如果您希望作为一个结果用户元查询,可以通过这个函数get_post_meta(post_id,meta_key,true)在循环中获取post meta。如果你想从lat_lng_post中获取信息,我想你应该使用wpdb的自定义查询,你能给我提供该表的结构它是如何与wp_posts表连接的吗?好的,试试这个数组('post_per_page'=>2,'paged'=>paged,'post_type'=>event','meta query=>array('relations'=>'和')('key'=>'lat'、'value'=>'44.444'、'compare'=>'=')、数组('key'=>'long'、'value'=>'50.456'、'compare'=>'=>'='));$query=new Wp_query($args)没问题,希望我能帮到你:)