add_query_arg для сравнения и отображения событий с определенной даты

У меня есть файл archive-events.php который сортирует пользовательские сообщения типа «события» через WP_Query, используя настраиваемое поле, которое отформатировано в формате YYYYMMDD (20150215) следующим образом:

 $args = array( 'post_type' => 'events', 'posts_per_page'=> 10, 'meta_key' => 'wpcf-sort-events', 'orderby' => 'meta_value_num', 'order' => 'ASC' ); $wp_query = new WP_Query( $args ); 

Затем я создал виджет, который отображает пользовательский календарь с ссылками на дату, чтобы сравнить пользовательские поля с помощью add_query_arg и отображать события, заархивированные с этой даты, следующим образом:

 $day = I get the day for the calendar before this... 01 $date = I get the full date (Ymd 20150501) from calendar widget to compare $arrayargs = array( 'meta_query' => array( 'key' => 'wpcf-sort-events', 'value' => $date, 'compare' => '>=' ), ); $output = '<a href="' . add_query_arg( $arrayargs ) . '>' . $day . '</a> '; 

Это создает ссылку вроде этого: http://mediterranean.life/events/?meta_query%5Bkey%5D=wpcf-sort-events&meta_query%5Bvalue%5D=20150501&meta_query%5Bcompare%5D=%3E

Но я получаю все события (независимо от пользовательской даты), отсортированные по ASC-запросу в archive-events.php , он игнорирует meta_query по ссылке …

Я попытался создать ссылку с полным запросом вроде этого, но также не удалось …

 $arrayargs = array( 'post_type' => 'events', 'meta_key' => 'wpcf-sort-events', 'meta_query' => array( 'key' => 'wpcf-sort-events', 'value' => $date, 'compare' => '>=' ), 'orderby' => 'meta_value_num', 'order' => 'ASC' ); $output = '<a href="' . add_query_arg( $arrayargs ). '>' . $day . '</a> '; 

Потерянные в космосе … любые идеи?

Solutions Collecting From Web of "add_query_arg для сравнения и отображения событий с определенной даты"

Как вы видите в своем пользовательском WP_Query, вы передаете жестко закодированные агитации, вы не оцениваете аргументы, переданные в URL-адресе, поэтому они не влияют на результат.

В вашем случае кажется, что использование настраиваемого запроса для шаблона архива является плохим. Когда вы запрашиваете шаблон архива, события для архива уже запрошены, и вы отказываетесь от результатов и делаете новый вторичный запрос. Вместо этого вы должны использовать pre_get_posts action hook для изменения основного запроса перед его выполнением, чтобы вы могли получать pre_get_posts вам события в шаблоне архива без необходимости использования вторичного шаблона.

 add_action( 'pre_get_posts', function( $query) { if(isset($query->query_vars['action']) && $query->query_vars['action'] == 'search'){ //Check that is the main query, not secondary, that we are not in admin side //and check that $query is the for the events archive if($query->is_main_query() && !is_admin() && is_post_type_archive('events') ) { //Get the values passed in the URL and pass them to the query if( ! empty( $_GET['meta_query'] ) ) { //You may need some validation/sanitization in $_GET['meta_query'] befor use it $query->set( 'meta_query', $_GET['meta_query'] ); } } } } );