Как организовать поиск по категориям в wordpress?

Помогите , голову ломаю , хожу вокруг до окола и не могу найти ответ на свой вопрос, думаю здесь мне его быстро дадут.
я хочу что бы у меня был поиск по двум категориям , допустим первая категория выбор спорт инвентаря (коньки , лыжи, велосипед, ролики) вторая категория выбор парка (горького , вднх, сокольници, царицино) и в конце двух категорий конечно же кнопка поиска
<select id="inventar" name="inventar">
 <option value"">Инвентарь</option>
 <option value"Коньки">Коньки</option>
 <option value"Лыжи">Лыжи</option>
 <option value"Велосипед">Велосипед</option>
 <option value"Ролики">Ролики</option>
</select>

<select id="park" name="park">
 <option value"">Парк</option>
 <option value"Горького">Горького</option>
 <option value"Сокольники">Сокольники</option>
 <option value"ВДНХ">ВДНХ</option>
 <option value"Царицино">Царицино</option>
</select>
<input type="hidden" name="source" value="bb"><button type="submit" class="search-button form-inline btn btn-primary btn-large" id="submit_location">
			    Начать поиск
			  </button>


как быть дальше , как допустим в описании парка прописать нужные категории что бы в результате поиска нужные парки были найдены , пожалуйста киньте туториал или если вам не трудно распишите все досконально буду очень благодарен!
  • Вопрос задан
  • 7873 просмотра
Решения вопроса 1
Всё очень просто!)
В селект лучше писать ID категории. Вот схема
<form action="/" method="get" role="search">
	<select name="inventar">
		<?php
		$categories = get_categories(array(
			'child_of' => 2 // если не знаешь ID то - get_category_by_slug( 'inventar' )->cat_ID
		));
		foreach($categories as $category):	?>
			<option value = "<?=$category->cat_ID ?>"><?=$category->cat_name ?></option>
		<?php endforeach ?>
	</select>
	<select name="park">
		<?php
		$categories = get_categories(array(
			'child_of' => 3 // get_category_by_slug( 'park' )->cat_ID
		));
		foreach($categories as $category):	?>
			<option value = "<?=$category->cat_ID ?>"><?=$category->cat_name ?></option>
		<?php endforeach ?>
	</select>
	<input type="hidden" name="source" value="bb">
	<button type="submit">Начать поиск</button>
</form>


И обрабатывать как-то так (я ловил через твоё скрытое поле source)
add_filter('pre_get_posts', function($query){
	if(isset($_GET['source']) && $_GET['source'] == 'bb'){
		$query->set( 'category__and', array(
			$_GET['inventar'],
			$_GET['park']
		) );
	}
});


То есть выведутся записи, расположенные одновременно в обоих искомых категориях.
Это схема, без проверок, selected и тд. Сделайте это самостоятельно!))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Zippovich
@Zippovich
сплю, ем, сплю, ем, сплю, ем
<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
  <div>
    <label class="screen-reader-text" for="s">Ищем:</label>
    <input type="text" value="" name="s" id="s" />
    in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>
    <input type="submit" id="searchsubmit" value="Искать" />
  </div>
</form>


но в Вашем случае сделать кастомный поиск будет не так просто.
делаете кастомные поля для инвентаря и места, лучше использовать плагин Advanced Custom Field.
на сайте плагина и документация по работе с ним, а дальше только мастерство php-кода Вас спасет - делаете форму и делаете кастомный поиск по этим полям.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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