使用home.php使分页工作



我似乎无法在home.php(即包含按日期排序的所有帖子的页面(上创建正确的数字分页链接。一直在WP开发者手册、谷歌和Stack Overflow上搜索答案,但都无济于事。

以下是我的home.php文件到目前为止的样子:

<?php get_header(); ?>
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var('paged' ) : '1';
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'posts_per_page' => 5,
'paged' => $paged
);
$the_query = new WP_Query($args);
?>
<!-- The Main Loop is here -->
<?php
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $the_query->max_num_pages
) );
?>
<?php get_footer(); ?>

在我的开发站点中,我有7个示例帖子。第一个页面(即最近的5篇文章(按照我想要的方式呈现。但当你点击其中一个编号的页面链接时,它会重定向到正确的URL格式,但不是使用home.php作为模板文件,而是使用404.php。我可能在这里错过了什么,但我似乎不知道是什么。

如有任何帮助,我们将不胜感激。

当您想将分页添加到wordpress提供的默认post中时,您必须遵循以下步骤,这样分页才能工作。

->在wp-admin中设置>>设置>>阅读设置博客文章显示为5(每页要显示的帖子数(。

无论你想要什么post_per_page,都可以设置它。希望这能有所帮助。

替换为以下分页代码:

<div class="pagination">
<?php 
echo paginate_links( array(
'base'         => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
'total'        => $query->max_num_pages,
'current'      => max( 1, get_query_var( 'paged' ) ),
'format'       => '?paged=%#%',
'show_all'     => false,
'type'         => 'plain',
'end_size'     => 2,
'mid_size'     => 1,
'prev_next'    => true,
'prev_text'    => sprintf( '<i></i> %1$s', __( 'Newer Posts', 'text-domain' ) ),
'next_text'    => sprintf( '%1$s <i></i>', __( 'Older Posts', 'text-domain' ) ),
'add_args'     => false,
'add_fragment' => '',
) );
?>
</div>

WordPress附带了一个名为paginate_links()的方便功能,可以完成繁重的工作。在上面的示例中,使用了自定义WP_Query对象$query,而不是全局$wp_query对象。

最新更新