Php将博客文章显示为网格视图

时间:2018-03-30 作者:jkresse

我目前正在home.php 文件,我计划在“网格视图”中显示我的最后一篇博客文章,这样一行中就有4个容器,包含标题和更多信息。

我试过一些东西,但都没有按我想要的方式工作。我做的最后一件事是像这样放置一个for循环:

<?php
    for ($x = 1; $x <= 6; $x++) :
?>
        <div id="home_post_<?php echo $x ?> " class="home_post">
            <?php
                if(have_posts()) :
                    while(have_posts()) : the_post();
                        get_template_part(\'template-parts/content\', \'home\');
                    endwhile;
                endif;
            ?>
        </div>
<?php
    endfor;
?>
围绕我的循环,但那样的话,每一个新的div 都是第一篇完整的博客文章,所以这不是解决问题的方法。

有没有一种聪明的方法来处理“生成”div的循环,或者我只是走错了方向?

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

有点难猜,你到底想达到什么目标(你提到了关于连续四篇文章,然后在for循环中有数字6),但是。。。

如果希望在循环中仅显示4篇文章,则可以使用current_post 字段$wp_query, 因此,循环可能如下所示:

<?php while ( have_posts() and $wp_query->current_post < 4) : the_post(); ?>
    <div id="home_post_<?php echo $wp_query->current_post ?>">
        <?php get_template_part(\'template-parts/content\', \'home\'); ?>
    </div>
<?php endwhile; ?>
// you don\'t do anything if there are no posts, so there\'s no point in checking if (have_posts())
另一件值得记住的事情是,如果您只想在主页上显示4篇帖子,那么最好相应地修改查询,这样就不会得到多余的帖子。

SO网友:jkresse

我自己解决的,我是这样做的:

       <?php

            $x = 0;
        if(have_posts()) : while(have_posts() and $x <=5) : the_post(); ?>
            <div id="home_post_<?php echo $x ?>"> <?php
            get_template_part(\'template-parts/content\', \'home\');
                ?> </div> <?php
            $x++;
        endwhile;
        endif;
        ?>

结束