在x个帖子数量后更改首页布局(同时在同一循环中)

时间:2019-09-03 作者:TimothyKA

我正在尝试在发布x篇文章后更改我的首页布局,然后返回到原始布局,如下图所示。

<?php
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$query = new WP_Query( 
    array(
        \'posts_per_page\' => 7,
        \'paged\' => $paged
    ) 
);

if ( $query->have_posts() ) : ?>    

    <div> // container 1
        <div> //container 2

        <?php   
            $count = 1;
            while ( $query->have_posts() ) : $query->the_post(); 
        ?>

            <?php echo the_post_thumbnail(); ?>
            <?php echo get_the_title(); ?>


        <?php if ( 3 === $count) { ?>

        </div> // close container 2
    </div> // close container 1

        <?php }  ?>

    <?php if ( 4 <= $count) { ?>
        // put new layout here 
    <?php } ?>

    <?php if ( 6 <= $count) { ?>
        // return to original layout
    <?php } 

    $count++; 

    endwhile; 

endif; ?>
这是我目前拥有的代码的简化。希望这个问题容易理解!

深灰色代表新的部分

the dark grey represents new sections

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

首先,您不需要任何自定义计数器($count 变量)来实现这一点。WP_Query 已经有这样的计数器:

$current_post (循环过程中可用)当前显示的post索引。

你可以使用它。

然后回到您的代码。。。您的主要问题是,您没有在while循环中使用任何条件,而是在循环之后添加它们,所以它们什么都不做。

下面是它的外观:

<?php
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$query = new WP_Query( 
    array(
        \'posts_per_page\' => 7,
        \'paged\' => $paged
    ) 
);

   if ( $query->have_posts() ) : // if there are any posts found ?>    
    <div><!-- section 1 -->
        <?php while ( $query->have_posts() && $query->current_post < 3 ) : $query->the_post(); ?> 
        // put layout 1 here 
        <?php endwhile; ?>
    </div>
<?php endif; ?>

<?php if ( $query->have_posts() ) : // if there are enough posts for section 2 ?>
    <div><!-- section 2 -->
        <?php while ( $query->have_posts() && $query->current_post < 6 ) : $query->the_post(); ?>
        // put layout 2 here 
        <?php endwhile; ?>        
    </div>
<?php endif; ?>

<?php if ( $query->have_posts() ) : // if there are enough posts for section 3 ?>
    <div><!-- section 3 -->
        <?php while ( $query->have_posts() ) : $query->the_post(); ?>
        // put layout 3 here 
        <?php endwhile; ?>        
    </div>
<?php endif; ?>

相关推荐

如何处理多个forloop?

I have and order\\u id as array但是wc_get_order 一次只接受一个id如何循环使用order\\u id并让项目id和项目名称的列表?我在课堂上使用这个。如果按如下所示传递单个id,则其工作正常 public function getStuffDone() { order_id =array(358,368) $order = wc_get_or