首先用另一个模板发布x帖子,然后是其他模板

时间:2020-07-13 作者:Dennis

我想输出最新的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参数,第二个循环似乎在第二个post之后开始。但它显示了3个以上的帖子。

这个查询有什么问题?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

因为您使用了post_per_page 应该是什么时候posts_per_page (请注意复数“posts”)。

但实际上,您可以使用相同的查询并使用计数器来显示不同的模板部分:

$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();

相关推荐

使用jQuery检查是否选中了类别中的第二级复选框

我有两个级别的类别列表。第一个级别是多个级别(超过30个)。此外,关联的子项来自WP管理员,我想在选中至少一个第二级(子项)复选框时进行检查。提交#帖子后,我将运行jquery函数。这一部分很简单,但我不知道如何检查孩子们是否接受过检查。已经连续几天撞到我的头了:)