@CreativeStory

Как сделать требуемый вывод результатов поиска?

Привет!

Как можно разбить результаты поисковой выдачи по типу записи.

На проекте есть несколько типов записей(Экскурсии, Услуги, Новости)
Сейчас результат выдачи поиска выводит все единым блоком. Как можно разделить отображение результата по типам постов?

Допустим, искомое слово БАНАН, оно есть во всех типах постов, в Экскурсиях 2 поста с бананом, в Услугах 3 раза, в Новостях один раз.

Нужно чтобы запрос по банану выводил группу(по типу записи) с результатами:

Экскурсии:
- Банан 1
- Банан 2
Услуги:
- Банан 1
- Банан 2
- Банан 3
Новости:
- Банан 1
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@CreativeStory Автор вопроса
Решил вопрос так, файл темы search.php, основная часть кода:

if ( have_posts() ) {
    
    $stack = [];
    
    foreach($posts as $item) {
        // складываем все типы постов результата поиска
        array_push($stack, $item->post_type);
    }
    // находим уникальные типы постов
    $result = array_unique($stack);

    foreach ($result as $res) : 
        $args = array(
            'post_type' => $res, // добавляем в запрос тип поста
            'post_per_page' => -1,
            's' => get_search_query(),
        );
        $query = new WP_Query($args);
 
        // Вывод группы результатов поиска по типу поста
        // Типа поста
        echo get_post_type_object($res)->label;    
 
        // посты 
        while($query->have_posts()) : $query->the_post();

            get_template_part( 'template-parts/content', 'search' );

        endwhile; wp_reset_query();

    endforeach;
} else {
    // если нет результатов
    get_template_part( 'template-parts/content', 'none' );
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы