Результаты поиска WordPress несколько циклов - PullRequest
2 голосов
/ 09 декабря 2011

Вот мой search.php:

<?php if (have_posts()) : ?>
    <h2 class="pagetitle">Page Search Results</h2>
    <?php while (have_posts()) : the_post(); ?>
        <?php if ($post->post_type == 'page') : ?>
             Show Page results
        <?php endif; ?>
    <?php endwhile; ?>

    <?php rewind_posts(); ?>
    <h2 class="pagetitle">Post Search Results</h2>
    <?php while (have_posts()) : the_post(); ?>
        <?php if ($post->post_type != 'page') : ?>
             Show non-page results
        <?php endif; ?>
    <?php endwhile; ?>

<?php else : ?>
 No Results
<?php endif; ?>

Код позволяет отделить результаты поиска по сообщениям от найденных на страницах. Если по записям или страницам не найдено результатов поиска, отображается текст «Нет результатов».

Однако, когда результаты найдены для страниц, но НЕ для сообщений (и наоборот), в разделе «Результаты поиска сообщений» ничего не отображается. Я хотел бы настроить код так, чтобы, если в разделе «Поиск сообщений» результатов не было найдено Результаты », но в разделе« Результаты поиска страницы »есть результаты, текст« Нет результатов »отображается под заголовком« Результаты поиска по почте ».

Большое спасибо всем.

1 Ответ

1 голос
/ 09 декабря 2011

Попробуйте, вы можете расширить массив, включив в него любой post_type, который использует ваш сайт:

<?php
    foreach (array('post','page') as $pt) :
        $search_query = new WP_Query(array(
                'post_type'         => $pt,
                's'                 => $s,
                'posts_per_page'    => 10,
                'paged'             => $paged
            )
        );
    ?>
    <?php if ($pt == 'post') : ?>
        <h2 class="pagetitle">Post Search Results</h2>
    <?php else : ?>
        <h2 class="pagetitle">Page Search Results</h2>
    <?php endif; ?>
    <?php 
        if ($search_query->have_posts()) : while ($search_query->have_posts()) : $search_query->the_post();
        if ($pt == 'post') :
    ?>
        Post Results Code
    <?php else : ?>
        Page Results Code
    <?php endif; ?>
    <?php endwhile; else : ?>
        No Results
    <?php endif; ?>
<?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...