Недавно мы показали вам, как ограничить результаты поиска по конкретным типам постов в WordPress. Теперь мы собираемся показать вам, как вы можете создавать различные / множественные формы поиска в целом. Таким образом , каждая форма может быть ограничена поиском для определенного типа поста. Несмотря на то, что это не очень трудно потребует от вас как минимум иметь базовое понимание шаблонов WordPress.
Во-первых, вам будут нужны некоторые формы поиска. Поместите следующий код туда, куда вы хотите, чтобы они были в вашем блоге:
<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/"> <input type="text" value="" name="s" id="s" /> <input type="hidden" name="search-type" value="normal" /> <input name="submit" type="submit" value="Go" /> </form>
Для того, чтобы определить, будет делать каждая форма поиска, просто измените значение скрытого поля. Сейчас он установлен на “normal”, но это может быть все, что вы хотите. Далее, нам необходимо изменить файл search.php. Откройте его и замените все, что в нем с этим кодом (скопировать существующий код в буфер обмена во-первых, вы будете нуждаться в этом через минуту):
<?php if(isset($_GET['search-type'])) { $type = $_GET['search-type']; if($type == 'random') { load_template(TEMPLATEPATH . '/normal-search.php'); } elseif($type == 'books') { load_template(TEMPLATEPATH . '/books-search.php'); } } ?>
Таким образом, мы будем предполагать, что у вас есть две формы поиска, nornal и books. Этот код просто перенаправляет поиск в файле PHP, который обрабатывает этот конкретный запрос. Теперь мы просто должны создать эти файлы. Таким образом, создайте файл normal-search.php и файл book-search.php (замените значения “normal” и “book” на те значения, которые вы использовали).
Теперь, в файле search.php скопируйте и вставьте следующий код:
$args = array( 'post_type' => 'post' ); $args = array_merge( $args, $wp_query->query ); query_posts( $args );
Сразу после этого вставьте код цикла из буфера обмена, скопированный из файла search.php. Вместе, этот код будет искать только ваши посты блога: normal. Теперь в файле book-search.php добавить этот кусок кода и снова вставить цикл после нее:
$args = array( 'post_type' => 'books' ); $args = array_merge( $args, $wp_query->query ); query_posts( $args );
Это приведет к WordPress для поиска только для пользовательского поста типа “book”. Вы можете повторить этот процесс на столько форм поиска, сколько вы хотели.