Пользовательские переменные поиска в wp-запросе?

У меня есть поисковый прямой URL-запрос, например: domain.com/?lis=&st=listing&lat=52.6323813&lng=4.7533754&radius=50

Теперь я хотел бы использовать этот поисковый запрос в качестве запроса WP для получения сообщений. Я создал шаблон пользовательских сообщений и хотел бы запросить сообщения, подобные приведенному выше запросу, но затем с URL-адресом, например: domain.com/page

Я много искал. Нашел неплохую статью об этом здесь: https://www.smashingmagazine.com/2016/03/advanced-wordpress-search-with-wp_query/, но не смог заставить ее работать.

-Я думаю, что pre_get_posts hook хорош для этого права? Однако в кодексе я обнаружил, что «pre_get_posts не следует использовать для изменения запроса для одиночных запросов страниц». Но я предполагаю, что это просто для the_content(); одной страницы, правильно?

-Итак, я попытался зарегистрировать вазы запросов как таковые

 function myplugin_register_query_vars( $vars ) { $vars[] = 'ls'; $vars[] = 'radius'; $vars[] = 'st'; $vars[] = 'lat'; $vars[] = 'lng'; return $vars; } add_filter( 'query_vars', 'myplugin_register_query_vars' ); 

После этого я попытался применить его в pre_get_posts hook для определенных дочерних страниц:

 if ( get_post_field( 'post_parent' ) === 8446 ) { $meta_query = array(); $meta_query[] = array( 'key' => 'ls', 'value' => get_query_var( '' ), 'compare' => '=' ); $meta_query[] = array( 'key' => 'st', 'value' => get_query_var( 'listing' ), 'compare' => '=' ); $meta_query[] = array( 'key' => 'radius', 'value' => get_query_var( '50' ), 'compare' => '=' ); $meta_query[] = array( 'key' => 'lat', 'value' => get_query_var( '52.6323813' ), 'compare' => '=' ); $meta_query[] = array( 'key' => 'lng', 'value' => get_query_var( '4.7533754' ), 'compare' => '=' ); if( count( $meta_query ) > 1 ){ $meta_query['relation'] = 'AND'; } if( count( $meta_query ) > 0 ){ $query->set( 'meta_query', $meta_query ); } } 

Затем для шаблона страницы у меня есть обычный WP-запрос:

 <?php // The Query $query_args = array( 'post_type' => 'listing', 'posts_per_page' => '-1' ); $the_query = new WP_Query( $query_args ); // The Loop if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) : $the_query->the_post(); echo get_the_title().'<br>'; endwhile; } else { // no posts found } /* Restore original Post Data */ wp_reset_postdata(); ?> 

Это, однако, не работает. Может ли кто-нибудь помочь мне в этом вопросе? Благодаря!

Solutions Collecting From Web of "Пользовательские переменные поиска в wp-запросе?"