想要将帖子的各个部分分开。你能重新启动环路吗?

时间:2016-12-21 作者:BethA

我想把这个循环分解成帖子的各个部分,这样我就可以把不重复的内容放在中间。是否可以结束循环并重新启动?

如果一个页面上有10篇文章,那么我的代码适用于我的布局工作。当我有更少的时候,它会断裂,因为最后的div为。网格与显示的第10个立柱相连。

这显示了我的布局:第一篇帖子,网格中的2-5篇,非帖子div分隔,重复帖子,然后在网格中发布。layout

        <?php if ( have_posts() ) :
        $count = 0;

        while ( have_posts() ) : the_post();
            $count++; 

            if ($count == 1) : ?>
                <article class="large"></article>

            <?php elseif ($count == 2) : ?> 
                <div class="grid"> 
                    <article></article>
            <?php elseif ($count == 3) : ?>     
                <article></article>
            <?php elseif ($count == 4) : ?>  
                <article></article>
            <?php elseif ($count == 5) : ?>     
                <article></article>
            </div> <!-- .grid -->   

            <div id="edit">
            </div> <!-- #edit -->

            <?php elseif ($count == 6) : ?>
            <article class="large"></article>

            <?php elseif ($count == 7) : ?> 
                <div class="grid"> 
                    <article></article>
            <?php elseif ($count == 8) : ?>     
                <article></article>
            <?php elseif ($count == 9) : ?>  
                <article></article>
            <?php elseif ($count == 10) : ?>    
                <article></article>
            </div> <!-- .grid -->

            <?php endif; ?>
        <?php endwhile; ?>

    <?php endif; ?>

2 个回复
SO网友:ngearing

此模式可以简化为两个主要部分,即大型长方体和网格长方体。

你说当你的帖子少于10篇时,你很难关闭网格框,关闭网格的一个简单方法是检查当前帖子是否等于总帖子。

以下是我对你的循环的解释:

<?php
if (have_posts()) :
    while (have_posts()) :
        the_post();
        $total_posts = $wp_query->post_count;
        $current_post = $wp_query->current_post;

        // Large boxes
        if (in_array($current_post, array(1, 6))) : ?>

            <article class="large"></article>
    <?php
        elseif ($current_post > 1 && $current_post < 6 || $current_post > 6) :
            // Open grid box
            in_array($current_post, array(2, 7)) ? "<div class=\'grid\'>" : "";
    ?>
            <article></article>
    <?php
            // Close grid box
            in_array($current_post, array(6, $total_posts)) ? "</div> <!-- .grid -->" : "";
            // Add seperator
            $current_post == 6 ? "<div id=\'edit\'></div> <!-- #edit -->" : "";

        endif;

    endwhile;
endif;
?>

SO网友:prosti

您可以在while

global $wp_query;
$total_posts = $wp_query->post_count;
要获得你将获得的帖子数量,因为你不一定会得到10篇。

现在$total_posts 可以帮助您创建所需的自定义逻辑。