Как сделать фильтр поисковых результатов по категориям и тегам

Как сделать фильтр поисковых результатов по категориям и тегам | n-wp.ru

Поисковый запрос в блоге бывает слишком общим – отображается слишком большое количество постов. Область поиска в таком случае можно сузить, выведя все категории и все теги, которые встречаются в этих постах. Перейдя по ссылке категории, посетитель увидит все посты, в которых встречается искомое слово, принадлежащие этой категории – получится фильтр поисковых результатов по определенной категории или тегу.

Как сделать фильтр поисковых результатов по категориям и тегам

Чтобы создать такой фильтр, откройте файл 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 = 'cat_ID.'">'.$category->cat_name.''; 
$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 = 'slug.'">'.$this_tag->name.''; 
$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 "
Категории"; for($i=0;$i<count($filter_categories_array);$i++) { echo $clear_filter_categories_array[$i]; } echo "
"; if ($filter_categories_array == null ) { echo ""; } ?> <?php echo "
Метки"; for($i=0;$i<count($filter_tags_array);$i++) { echo $clear_filter_tags_array[$i]; } echo "
"; if ($filter_tags_array == null ) { echo ""; } ?> <?php } }

Каждая ссылка, выводимая этим фильтром – это поисковый запрос, ограниченный определенной категорией или тегом. Например, ссылка на категорию имеет такой код:

http://site.ru/?s=XXX&cat=CAT_ID

XXX – это поисковый запрос, CAT_ID – это ID категории, которой ограничивается область поиска. Осталось только внедрить фильтр в шаблон. Например, можно вывести этот фильтр на странице результатов поиска search.php:

Можно вставить фильтр в header.php, вставив условие показывать его только на странице результатов поиска:

Надеюсь, что фильтр поможет сделать блог более удобным для читателей.

Автор tiaurus 2181 статья
Автор n-wp.ru — блога о WordPress для новичков.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*