在我开始之前,不要使用get_posts
用于分页查询。get_posts
合法地中断分页,并且不返回查询对象。如果需要对查询分页,请使用WP_Query
至于你的问题,我真的不认为当你涉及分页时,将帖子总数限制在100篇是可能的。我能想到的唯一情况是:
删除第10页上的页面链接,但您也可以手动进入第11页并查看第11页的帖子
发布新帖子时运行自定义功能,将第101篇帖子和顺序帖子的状态更改为其他内容,如draft
. 默认情况下,WP_Query
仅查询publish
针对所有用户和额外用户的ed帖子private
登录用户的帖子。因此,如果您更改帖子状态,这些帖子将被排除在外
另一种干扰较小的方法是运行两个查询。第一个是非常基本和精简的,它将返回post ID的only 在前100个职位中。此ID将传递给第二个查询,该查询每页将获得10篇文章,并且只有10页,因为我们只向其传递100个ID。这里的优点是,如果手动输入第11页,您将得到404页。
正如我所说,第3点是最好的选择。我们将使用get_posts
对于第一个查询,因为它减少了分页,这会加快您的查询速度,而我们只会得到post ID,这使整个查询比正常查询快99.9%。总的来说,对页面的影响几乎为零。对于第二个查询,我们将使用WP_Query
以及post__in
参数以获取分页的帖子列表
(此代码未经测试,需要PHP 5.4+)
$args = [
\'posts_per_page\' => 100,
\'fields\' => \'ids\',
// Add additional args here
];
$post_ids = get_posts( $args );
if ( $post_ids ) {
$args_2 = [
\'paged\' => $paged,
\'post__in\' => $post_ids,
\'posts_per_page\' => 10,
];
$q = new WP_Query( $args_2 );
while ( $q->have_posts() ) {
$q->the_post();
// YOUR LOOP
}
next_posts_link( \'Next Posts\', $q->max_num_pages );
previous_posts_link( \'Previous Posts\' );
wp_reset_postdata();
}