经过几次检查和测试,我找到了问题的来源并自己解决了它,我将在这里分享它,这样将来任何人都会遇到同样的问题,这肯定会有所帮助。
正如我上面提到的,问题根本不是来自分页,分页被破坏了是的,但破坏它的是WP\\u查询参数offset 因为它覆盖了paged 参数,它是分页的重要参数。
经过几次测试后,我想出了如何在修改WP\\u查询后进行干净且安全的分页,这就是应该如何完成的,我将在下面用干净的代码和解释展示它。
function theme_pagination() {
global $wp_query;
$totalPages = $wp_query->max_num_pages ;
$currentPage = max( 1, get_query_var( \'paged\' ) );
if ( $totalPages > 1 ) {
$big = \'9999999\';
return paginate_links( array(
\'format\' => \'page/%#%\',
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ))),
\'current\' => $currentPage,
\'total\' => $totalPages,
\'prev_text\' => __( \'Prev\', \'domain\' ),
\'next_text\' => __( \'Next\', \'domain\' )
) );
}
}
我想除了参数中给出的函数外,您必须熟悉函数中的几乎所有参数和函数
base, 这是必须的,分页才能与搜索页面正常工作,以避免在每个页面中显示相同的帖子。
str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) );
如你所知,我的计划是在一个单独的查询中显示一篇特色文章,然后再进行第二次查询以显示其余的文章,而不复制特色文章。
当我第一次尝试让它与offset参数一起工作时,它实际上起了作用,但它不同意让paged参数也起作用,所以我查看并思考了使它在没有offset参数的情况下工作的每一种方法,下面是它如何毫无问题地工作的。
这是显示特色帖子的第一个查询的结构:
$featured_args = array( \'posts_per_page\' => 1 );
$featured_loop = new WP_Query( $featured_args );
if ( $featured_loop->have_posts() ):
while ( $featured_loop->have_posts() ): $featured_loop->the_post();
$do_not_duplicate = $post->ID;
<article class="featured_post">
The body of the article goes here...
</article>
endwhile;
wp_reset_postdata();
endif; ?>
关注变量
$do_not_duplicate, 我用它来存储
Featured Post\'s ID 在它中,稍后在第二个查询中使用它,如下所示:
Note: 如果要存储两篇文章(在下一个查询中跳转两篇文章),请确保在如下数组中使用它:
$do_not_duplicate[] = $post->ID
下面是第二个查询的外观,这是我们完成全部工作的部分:
if ( have_posts() ):
while ( have_posts() ): the_post();
if ( $post->ID == $do_not_duplicate ) continue; ?>
<div class="blog_loop_container">
<article class="blog_post">
The body of the articles goes here...
</article>
</div>
<?php endwhile; ?>
<div class="pagination_container">
<?php echo theme_pagination(); ?>
</div>
<?php endif; ?>
在第二个查询中,如您所见,不要更改它,只需使用基本查询,只需记住在打印任何文章正文之前,请确保检查是否有重复的帖子ID,以便跳过它并继续如下操作:
if ( $post->ID == $do_not_duplicate ) continue; ?>
我在第一篇帖子的ID中存储的变量还记得吗?我用它来检查是否有重复的帖子可以跳过。
这是我修复主题、档案、搜索、页面、博客以及主题的每一部分的整个分页的方法,我希望这对您有所帮助,如果有任何问题,请在下面的评论中告诉我,以便我能提供帮助。