【问题标题】:WordPress search results multiple loopsWordPress搜索结果多循环
【发布时间】:2011-12-08 23:46:30
【问题描述】:

以下是我的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; ?>

该代码允许将帖子下的搜索结果与页面中的搜索结果分开。如果没有找到帖子或页面的搜索结果,则会显示文本“No Results”。

但是,当找到页面但未找到帖子的结果时(反之亦然),在“发布搜索结果”下没有显示任何内容。我希望调整代码,以便如果在“发布搜索”下找不到结果结果”,但在“页面搜索结果”下找到了结果,“无结果”文本显示在“发布搜索结果”标题下方。

非常感谢大家。

【问题讨论】:

    标签: wordpress search


    【解决方案1】:

    试一试,您可以扩展数组以包含您的网站正在使用的任何 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; ?>
    

    【讨论】:

    • 我对结果有不同的格式,具体取决于它们是在帖子还是页面中找到。代码是否考虑到这一点?感谢您的关注。
    • 好的,代码返回的是帖子而不是页面的结果。在对几页中包含的明显单词进行多次搜索后,我仍然得到“无结果”。此外,我需要两个单独的标题标题以获得类似于我的原始代码的结果。谢谢饼干
    • 抱歉,foreach 数组中多了一个“s”。
    • 它现在从页面和帖子中提取结果。现在的问题是,如果在页面中找到结果而不是帖子,则会显示“页面搜索结果”标题,但不会显示“帖子搜索结果”。即使一个标题“没有结果”,我也需要始终显示两个标题。感谢您的耐心等待。
    • 另外,如果在两个页面和帖子下都没有找到结果,上面的代码不考虑。在这种情况下,我需要额外的独特信息来显示。真的,再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2013-01-14
    • 2019-03-11
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多