如何实现Wordpress分页?

时间:2012-05-02 16:49:12

标签: wordpress

我正在尝试为我的帖子实施分页。虽然我有点困在php函数以及如何调用它。

我想这是一个简单的方法:

<?php posts_nav_link(); ?>

但如果我想要自定义分页怎么办?

这是我目前的代码:

<?php 
    global $wp_query;
    $total = $wp_query->max_num_pages;
    if ( $total > 1 )  {
         if ( !$current_page = get_query_var('paged') )
              $current_page = 1;
         echo paginate_links(array(
              'base' => get_pagenum_link(1) . '%_%',
              'format' => '?paged=%#%',
              'current' => $current_page,
              'total' => $total,
              'mid_size' => 4,
              'type' => 'list'
         ));
    }
?>

这是正确的,我该怎么称呼它?在index.php?循环中的位置?感谢。

编辑以澄清:我如何实现此代码?目前我把它放在我的functions.php中。那么如何(以及在​​循环中的哪个位置)我'引用'这个函数,以便显示分页。

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现此代码。看起来你现在处于两者之间。

第一种方法是将您的分页代码直接添加到模板中,它将在循环内的某个位置使用(很可能在结束<?php endwhile; ?>标记之前的某处)。如果您使用的是single.php模板,则将其放在那里,如果没有,请将其放在index.php中。将其放置在循环内取决于您希望分页在页面上显示的位置。

第二种方法是将分页代码添加到functions.php文件中(您已经完成)。但是,您需要稍微修改一下代码。您需要将代码包装在函数中,并将该函数命名为某个函数。我已经使用your_custom_pagination作为示例。你的functions.php文件很可能已经包含在php标签中,所以我删除了它们。

function your_custom_pagination() {
    global $wp_query;
    $total = $wp_query->max_num_pages;
    if ( $total > 1 ) {
        if ( !$current_page = get_query_var('paged') ) {
            $current_page = 1;
        }
        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '?paged=%#%',
            'current' => $current_page,
            'total' => $total,
            'mid_size' => 4,
            'type' => 'list'
        ));
    }
}

然后,您需要进入正在使用的模板,并将此代码<?php your_custom_pagination(); ?>放入我上面说明的相同位置以调用分页功能。

我还没有真正测试过你的代码,所以假设它有效,一切都应该有效。