Поисковый запрос в блоге бывает слишком общим – отображается слишком большое количество постов. Область поиска в таком случае можно сузить, выведя все категории и все теги, которые встречаются в этих постах. Перейдя по ссылке категории, посетитель увидит все посты, в которых встречается искомое слово, принадлежащие этой категории – получится фильтр поисковых результатов по определенной категории или тегу.
Чтобы создать такой фильтр, откройте файл 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, вставив условие показывать его только на странице результатов поиска:
Надеюсь, что фильтр поможет сделать блог более удобным для читателей.








НЕ РАБОТАЕТ :