我似乎无法在home.php
(即包含按日期排序的所有帖子的页面)上创建正确的数字分页链接。一直在搜索WP开发人员手册,Google和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
作为模板文件。我可能在这里错过了一些东西,但似乎无法弄清楚。
任何帮助将不胜感激。
答案 0 :(得分:1)
如果要将分页添加到wordpress提供的默认post
上,则必须执行以下步骤,以便分页起作用。
->在wp-admin >>设置>>中设置>>阅读已设置的博客帖子,显示为5(要在每页显示的帖子数)。
只需设置任何posts_per_page即可。希望有帮助。
答案 1 :(得分:0)
替换为以下分页代码:
<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
对象。