kirill_gladkih
@kirill_gladkih
Олдтрукодер

Как сделать поиск по категориям или таксономии в Wordpress?

Суть проблемы.
Есть таксономия "category_media" (от плагина WP Media Category Management)
Есть пару категорий (рубрик), по которым бы хотелось вести поиск. Пусть их ID будут - 3, 5.

Хочется вывести форму поиска:
- input куда забиваем текст
- input[type=radio] - рубрика 3
- input[type=radio] - рубрика 5
- input[type=radio] - таксономия category_media
- input submit

Так же интересно как для каждой рубрики при поиске сделать свой шаблон вывода.
Спасибо!
  • Вопрос задан
  • 3420 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yaroslavgrishajev
В WP есть шаблон строки поиска, который можно переопределить, поместив в тему файл searchform.php и поместив в него нужный шаблон. Например такой:

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
	<div>
		<label class="screen-reader-text" for="s"><?php _x( 'Search for:', 'label' ); ?></label>
		<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" />
		<input type="radio" name="cat" value="21">
		<input type="radio" name="cat" value="22">
		<input type="radio" name="cat" value="23">
		<input type="submit" id="searchsubmit" value="<?php echo esc_attr_x( 'Search', 'submit button' ); ?>" />
	</div>
</form>


В этом куске кода есть некоторые изменения от дефолтного шаблона - input с типом radio (собственно, как и в вопросе:)), он будет отправлять в поисковый запрос параметр cat со значением 21, или 22, или 23, что в свою очередь будет выведет в результаты поиска посты, которые относятся к категории с id = 21, 22, или 23.

Что касается шаблона, то в WP шаблон результатов поиска можно переопределить так же, как и шаблон формы поиска, поместив в директорию темы файл search.php (например) с Template Name: Search Page, ну и в нем уже писать запрос для вывода постов. И можно этот шаблон варировать в зависимости от значения $_GET['cat'] .

Более подробная инфа есть тут и тут
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы