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

Как сделать фильтр поисковых результатов по категориям и тегам | 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 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

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

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

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


*