首页需要将前六篇帖子放在旋转木马中,然后将下八篇帖子放在网格中。在这种设计中循环的最佳实践是什么?我目前正在使用“get\\u posts”调用前14个帖子,然后手动调用之后的每个帖子,但我认为必须有更好的方法。
这是我在索引的开头所做的。php:
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$offset = ($paged - 1) * 14;
$args = array(
\'numberposts\' => 14,
\'offset\' => $offset,
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'suppress_filters\' => true
);
$front_page_posts = get_posts( $args );
问题是我不能调用“get\\u template\\u part”,因为实际上没有post循环,所以我的其余代码如下所示:
<div class="carousel">
<?php get_carousel_slide($front_page_posts[0]->ID, true); ?>
<?php get_carousel_slide($front_page_posts[1]->ID); ?>
<?php get_carousel_slide($front_page_posts[2]->ID); ?>
<?php get_carousel_slide($front_page_posts[3]->ID); ?>
<?php get_carousel_slide($front_page_posts[4]->ID); ?>
<?php get_carousel_slide($front_page_posts[5]->ID); ?>
</div>
[…]
<div class="grid">
<?php
$count = 6;
while($count < 14){
get_front_eighth($front_page_posts[$count]->ID);
$count++;
}
?>
如您所见,我必须调用单独的函数来获取模板,而不是使用“get\\u template\\u part”。
那么,这样做的最佳实践是什么呢?
SO网友:Yuxel Yuseinov
将WP\\U查询与偏移量一起使用,如下所示
<?php
$offset = 6;
$post_args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => $offset,
);
$slider_blog_posts = new WP_Query( $post_args );
?>
<?php if ( $slider_blog_posts->have_posts() ): ?>
<div class="carousel">
<?php while( $slider_blog_posts->have_posts() ): $slider_blog_posts->the_post(); ?>
<?php get_carousel_slide( get_the_ID, true); ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
然后为其余帖子创建新查询:
<?php
$new_args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => 8,
\'offset\' => $offset
);
$grid_blog_posts = new WP_Query( $new_args );
?>
<?php if ( $grid_blog_posts->have_posts() ): ?>
<div class="grid">
<?php while( $grid_blog_posts->have_posts() ): $grid_blog_posts->the_post(); ?>
<?php get_front_eighth( get_the_id() ); ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
至于函数,使用它们返回数据而不是显示HTML。显示HTML应该在片段中完成。