Верхнее меню исчезает на страницах категории при фильтрации с помощью ACF

Я использую ACF (дополнительные пользовательские поля) и фильтрую результаты, используя метод, который они размещают на своем веб-сайте.

http://www.advancedcustomfields.com/resources/tutorials/creating-wp-archive-custom-field-filter/

Фильтрация работает нормально, однако верхнее меню исчезает, когда отображается результат. Код, который я использую, приведен ниже:

В function.php add_action ('pre_get_posts', 'my_pre_get_posts');

function my_pre_get_posts ($ query) {// проверять if (is_admin ()) {return; }

// get original meta query $meta_query = $query->get('meta_query'); // allow the url to alter the query // eg: http://www.website.com/events?location=melbourne // eg: http://www.website.com/events?location=sydney if( !empty($_GET['bedrooms']) ) { $bedrooms = explode(',', $_GET['bedrooms']); //Add our meta query to the original meta queries $meta_query[] = array( 'key' => 'bedrooms', 'value' => $bedrooms, 'compare' => 'IN', ); } // update the meta query args $query->set('meta_query', $meta_query); // always return return; } 

В категории.php

  <div id="search-houses"> <?php $field = get_field_object('bedrooms'); $values = explode(',', $_GET['bedrooms']); ?> <ul> <?php foreach( $field['choices'] as $choice_value => $choice_label ): ?> <li> <input type="checkbox" value="<?php echo $choice_value; ?>" <?php if( in_array($choice_value, $values) ): ?>checked="checked"<?php endif; ?> /> <?php echo $choice_label; ?></li> </li> <?php endforeach; ?> </ul> </div> <script type="text/javascript"> (function($) { $('#search-houses').on('change', 'input[type="checkbox"]', function(){ // vars var $ul = $(this).closest('ul'), vals = []; $ul.find('input:checked').each(function(){ vals.push( $(this).val() ); }); vals = vals.join(","); window.location.replace(location.pathname + '?bedrooms=' + vals); console.log( vals ); }); })(jQuery); </script> 

Демо: http://thepursesociety.com/_web/category/houses

Из pre_get_posts в Codex :

Определение целевых запросов

При использовании pre_get_posts помните о том, что вы меняете запрос. Одна полезная функция is_main_query (), которая может помочь вам убедиться, что запрос, который вы изменяете, является только основным запросом. Используйте его в сочетании с другими условными тегами, чтобы изменить основной запрос на нужные вам страницы.

pre_get_posts выполняется для каждого запроса на странице, который включает в себя запрос, который загружает ваши пункты меню, поэтому вам нужно проверить, есть ли $query->is_main_query() прежде чем изменять его, иначе вы примените модификации запроса к другим запросам.