首頁>Web>source

我想輸出5條最新帖子.但是前2个模板必须与其他3个帖子不同.所以我建立了两个查詢。

The first one shows the 2 posts:

<?php
$loop = new WP_Query( array(
   'post_type' => 'Post',
   'posts_per_page' => 2
   )
);
?>
 <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
      <?php get_template_part('loop-templates/blog-item-big'); ?>
 <?php endwhile; wp_reset_query(); ?>

The other query must show the other posts (limited with 3 posts):

<?php
$loop = new WP_Query( array(
   'post_type' => 'Post',
   'offset' => 2,
   'post_per_page' => 3
   )
);
?>
 <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
      <?php get_template_part('loop-templates/blog-item-small'); ?>
 <?php endwhile; wp_reset_query(); ?>

第一个迴圈似乎執行良好.它仅顯示最後添加的2个帖子.由於offset引數,第二个迴圈似乎在第二个帖子之後開始.但是它顯示了3个以上的帖子。

该查詢出了什麼問题?

最新回復
  • 11月前
    1 #

    它顯示了3條以上的帖子,因為您使用了 post_per_page 什麼時候應该是 posts_per_page (請註意複數的"帖子")。

    但是實際上,您可以使用相同的查詢並使用計數器来顯示不同的模板部分:

    $loop = new WP_Query( array(
        'post_type'      => 'post',
        'posts_per_page' => 5,
    ) );
    $c = 1; // post counter
    while ( $loop->have_posts() ) : $loop->the_post();
        if ( $c < 3 ) : // the first and second posts
            get_template_part( 'loop-templates/blog-item-big' );
        else :
            get_template_part( 'loop-templates/blog-item-small' );
        endif;
        $c++;
    endwhile;
    /* Or a simpler loop..
    $c = 1; // post counter
    while ( $loop->have_posts() ) : $loop->the_post();
        $template = 'blog-item-' . ( $c < 3 ? 'big' : 'small' );
        get_template_part( 'loop-templates/' . $template );
        $c++;
    endwhile;
    */
    // not wp_reset_query()
    wp_reset_postdata();
    

  • wordpress:wp_List_Table顯示為找不到名為wp列表表的類
  • wordpress:尽管有可用帖子,但get_next_posts_link()不返迴結果