使用home.php使分页工作

时间:2018-07-25 06:03:11

标签: php wordpress

我似乎无法在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作为模板文件。我可能在这里错过了一些东西,但似乎无法弄清楚。

任何帮助将不胜感激。

2 个答案:

答案 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对象。