Поисковый запрос в блоге бывает слишком общим – отображается слишком большое количество постов. Область поиска в таком случае можно сузить, выведя все категории и все теги, которые встречаются в этих постах. Перейдя по ссылке категории, посетитель увидит все посты, в которых встречается искомое слово, принадлежащие этой категории – получится фильтр поисковых результатов по определенной категории или тегу.
Чтобы создать такой фильтр, откройте файл functions.php, и добавьте в него этот код:
function search_filters(){ if(is_search()) { ?> <?php $searching = get_search_query(); $a=$b=$i=0; $filter_categories_array = array(); $filter_tags_array = array(); while (have_posts()) : the_post(); foreach((get_the_category()) as $category) { $categores = '<span class="search-results-link"><a>cat_ID.'">'.$category->cat_name.'</a></span>'; $filter_categories_array[$i] = $categores; $i++; } $all_the_tags = get_the_tags(); if ($all_the_tags) { foreach($all_the_tags as $this_tag) { $this_tag = '<span class="search-results-link"><a>slug.'">'.$this_tag->name.'</a></span>'; $filter_tags_array[$a] = $this_tag; $a++; } } endwhile; $clear_filter_categories_array = array_unique($filter_categories_array); $clear_filter_tags_array = array_unique($filter_tags_array); $clear_filter_date_array = array_unique($filter_date_array); echo "<div><span class='search-cat-title'>Категории</span>"; for($i=0;$i<count($filter_categories_array);$i++) { echo $clear_filter_categories_array[$i]; } echo "</div>"; if ($filter_categories_array == null ) { echo ""; } ?> <?php echo "<div class='search-tags-div'><span class='search-tags-title'>Метки</span>"; for($i=0;$i<count($filter_tags_array);$i++) { echo $clear_filter_tags_array[$i]; } echo "</div>"; if ($filter_tags_array == null ) { echo ""; } ?> <?php } }
Каждая ссылка, выводимая этим фильтром – это поисковый запрос, ограниченный определенной категорией или тегом. Например, ссылка на категорию имеет такой код:
</pre> <p>XXX – это поисковый запрос, CAT_ID – это ID категории, которой ограничивается область поиска. Осталось только внедрить фильтр в шаблон. Например, можно вывести этот фильтр на странице результатов поиска search.php:</p> <pre>
Можно вставить фильтр в header.php, вставив условие показывать его только на странице результатов поиска:
Надеюсь, что фильтр поможет сделать блог более удобным для читателей.
НЕ РАБОТАЕТ :