循环旋转木马中的前六个柱子,然后是栅格中的八个柱子

时间:2017-11-03 作者:mediocre_bro

首页需要将前六篇帖子放在旋转木马中,然后将下八篇帖子放在网格中。在这种设计中循环的最佳实践是什么?我目前正在使用“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”。

那么,这样做的最佳实践是什么呢?

1 个回复
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应该在片段中完成。

结束

相关推荐

Twenty Seventeen Pages Loop

有人能向我解释一下,在静态主页的2017主题中,它在哪里被引导去循环页面而不是帖子?我不明白它是在哪里这样做的,从一个新的WordPress安装。在里面front-page.php 我有这个:<?php // Get each of our panels and show the post data. if ( 0 !== twentyseventeen_panel_count() || is_customize_preview() ) : // If