В вашем случае я бы сделал две вещи:
- , чтобы отфильтровать начальный запрос страницы поиска для определенного типа записи
- , используйте одну
WP_Query
вызов для каждого оставшегося типа сообщения
Для (1) это будет указано в ваших функциях. php:
<?php
function SearchFilter($query) {
if ($query->is_search && !is_admin()) {
if (isset($query->query["post_type"])) {
$query->set('post_type', $query->query["post_type"]);
} else {
$query->set('post_type', 'product');
}
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
?>
Для (2) адаптируйте код, предоставленный вамиВаш файл шаблона:
<?php
$s = isset($_GET["s"]) ? $_GET["s"] : "";
$posts = new WP_Query("s=$s&post_type=post");
if ( $posts->have_posts() ) :
while ( $posts->have_posts() ) : $posts->the_post();
echo "<h1>";
echo $post->post_type;
echo $post->post_title;
echo "</h1>";
endwhile;
wp_reset_postdata();
endif;
?>
Вы можете повторно использовать этот код для каждого типа сообщений.
Лучше избегать использования query_posts
... см. запрос сообщений без query_posts (даже разработчики WordPress согласны).