Исключения для поиска

Расскажу сначала о структуре:
разработал каталог
1. в шапке выводятся по 1 записи из 2х рубрик.
2. содержимое это записи с кастом-полями
3. в футере выводятся 5 последних добавленных записей в каталог — query(‘cat=4&showposts=5’);

Напрягает поиск: по умолчанию ищет и по страницам и по рубрикам. Хочу сделать поиск только по рубрике каталога.
Вручную не знаю как урезать.
Установил search-everything, выставил исключения для поиска (убрал для поиска страницы и те самые 2 рубрики что выводятся в шапке)

На выходе на странице поиска получается:
1. в шапке постов нет , видимо гасятся из-за того что рубрики исключены в поиске для вывода …
2. содержимое нормально, выводится именно то, что надо
3. в футере вместо 5 последних записей выводится целый список постов соответствующих поисковому запросу..

Где-то надо вставить что-то типа <?php wp_reset_query();?> наверное… но не работает, не смотря на то что есть и в шапке и в футере.

Как я понял, WP у меня вообще пытается в любой вывод на этой странице запихать результаты поиска..

Вот бы решить эту ситуацию.

в шапке выводятся по 1 записи из 2х рубрик.

Секретным способом, надо понимать.

query('cat=4&showposts=5');

Еще один тайный вызов тайной функции?

Где-то надо вставить что-то типа <?php wp_reset_query();?> наверное... но не работает, не смотря на то что есть и в шапке и в футере.

Не используйте заклинания, которых не понимаете 🙂

Вот бы решить эту ситуацию.

Ну Вы же далеко не новичок на этом форуме и отлично знаете, что телепаты в отпуске 🙂 Код показывайте.

Шапка, 2 раза используется данный код, меняется только cat.

<?php     
$my_query = new WP_Query();
$my_query->query('cat=1&showposts=1');
if ($my_query->have_posts()):
while ($my_query->have_posts()) : $my_query->the_post();$do_not_duplicate = $post->ID;?>
<p><a href="<?php the_permalink();?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php echo strip_tags(get_the_excerpt(), '<a><strong>');?><?php endwhile ?></p>
<?php wp_reset_query();?><?php endif;?>

Футер,

<?php     
$footer_query = new WP_Query();
$footer_query->query('cat=4&showposts=5');
if ($footer_query->have_posts()):
while ($footer_query->have_posts()) : $footer_query->the_post();$do_not_duplicate = $post->ID;?> <div class="catitem"><p><?php
if ( has_post_thumbnail() ) {
    the_post_thumbnail('thumbnail');
} else { ?>
    <img src="blank.gif" width="50" height="50" alt="Изображения нет" />
<?php }
?>
<span class="brandname"><?php if (get('brandname')) : echo get('brandname'); endif; ?></span> 
<?php the_title(); ?> 
<?php if (get('price')) : ?>, <?php echo get('price'); endif; ?></p></div><?php endwhile ?>
<?php endif;?>

Попробуйте переписать с использованием get posts(). Есть подозрение, что при поиске не все исходные параметры "зачищаются" и каким-то образом попадают в новый экземпляр WP_Query (сходу другого объяснения придумать не могу).

Кстати, фрагмент $do_not_duplicate = $post->ID; похож на рудимент от какого-то другого кода.

Переписал на get_posts() — на странице поиска в шапке и в подвале ничего не выводится.
Убрал исключение рубрик из поиска по 1 посту из которых вывожу в шапке — стало выводиться.

Но.. пришёл к почти тому, что и было вначале — не знаю как исключить из поиска не каталожные рубрики.

Судя по плагину это add_filter работает. Ушёл в гугл.

Поиск только по определённым рубрикам

function SearchFilter($query) {
  if ($query->is_search) {
    $query->set('cat', '4');
  }
  return $query;
}
 add_filter('pre_get_posts','SearchFilter');
Anonymous
Отправить
Ответ на: