如何在主页的3栏中显示3种不同的循环

时间:2018-02-21 作者:JLW

我一直在搜索这个话题,但到目前为止,我还没有找到真正能回答我问题的答案。我知道有几种方法可以做到这一点,但我正在寻找最干净、最稳定的方法。

我想做的是在我的主页上显示三组不同的帖子。每组帖子将显示不同的类别,并显示不同数量的最新帖子。其中两个将占据“主”内容区域中的相同空间,通过“选项卡”链接,用户可以在任何给定时刻选择要显示的内容。第三个将显示在右侧的侧栏中。所有的帖子组都不需要分页,因为在显示最新的X个帖子数量后,我只需要有一个指向“阅读更多”的链接,它会将用户带到特定类别的归档页面。

我遇到了两种可能的解决方案,但我不知道哪一种是最好的,或者哪一种是好的选择。

设置静态首页并为其创建自定义页面模板,我可以使用所需的三个不同循环进行配置。

将首页设置为“最新帖子”,并修改显示的默认循环。

到目前为止,我已经很容易地设置了一组“侧栏”帖子。这只是我遇到麻烦的两组主要帖子。

如有任何相关指示,将不胜感激。我读过一些关于多重循环的文章,但没有一篇文章完全适用于我的情况,足以让我清楚地知道我应该做什么。

提前谢谢。

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

还有第三个选项,创建front-page.php 模板文件。它与选项#1类似,只是选项#1包括在admin中创建页面,在您的情况下,听起来不需要这样做。如果您还希望在常规编辑器中管理某些头版内容,而不是在主题中,则选项#1更合适。

如果您还没有子主题,请先创建一个。然后复制front-page.php 如果主题有一个-如果没有,您可能需要浏览层次结构,以查看哪个文件实际控制主题的主页。将其复制到您的子主题中,然后根据需要进行调整。由于您已经在侧栏中处理了一个循环,因此可以对第二组使用主/默认循环,并添加一个wp_query 第三组。

例如,当前主题文件的循环-

if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // This inner part of the Loop varies by theme
        the_content();
    endwhile;
endif;
用您自己的代码替换该部分-您的标记会有所不同,但希望这说明了如何为选项卡设置HTML,然后将两个循环放在其中:

<div class="row container">
    <div class="left column">
        <?php
        // Your standard Loop goes here
        if ( have_posts() ) :
            while ( have_posts() ) : the_post();
                // Format as desired
                the_content();
            endwhile;
        endif;
        ?>
    </div>
    <div class="right column">
        <?php
        // This is where you create an additional Loop
        $args = array(
            \'post_type\' => \'post\',
            \'category_name\' => \'your-category\', // change to your category
            \'posts_per_page\' => 5 // change to the total you want to display
        );
        // run the query
        $thirdLoop = new WP_Query($args);
        // Now this looks mostly like a normal Loop:
        if($thirdLoop->have_posts()):
            while ( have_posts() ) : the_post();
                // Format as desired
                the_content();
            endwhile;
        endif;
    </div>
</div>
从这里开始,您需要做几件事:自定义第三个循环的类别和要显示的帖子数量;自定义两个循环的HTML输出并输出更多信息,如the_title()the_permalink() 实际链接到每个帖子,而不仅仅是显示其内容;您可能还想自定义主查询,但这是一个主题。在上查找WPSE帖子pre_get_posts 自定义主页上的主查询,您可以将其限制为要在该循环中显示的任何类别,并限制帖子总数。

结束

相关推荐

Loop inside query

我有一个数组来存储分类法和查询术语,但我不能使用foreach在tax\\u查询中循环我的数组。我拿到了505内线。 $query = array( \'post_type\' => $post_type, \'posts_per_page\' => -1, ); $query[\'tax_query\'] = array( \'relation\' => \'OR\