怎样为wordpress主题的文章列表添加无插件分页?

在制作wordpress主题过程中,wordpress文章列表分页是不可或少的。为wordpress主题的文章列表分页,就有不少的人想到用wordpress插件来实现。的确,插件确实可以实现很漂亮的分布样式,但是,能尽量不使用插件,最好是不使用,毕竟插件在一定程序上会影响网站的速度。其实,为wordpress主题的文章列表分页,通过纯代码就可以实现。其实,wordpress程序就已提供了这样的功能,wordpress已经提供了页码函数——paginate_links(),但是直接使用这个函数,没有任何显示效果,需要配置参数来实现。

下面是wordpress官方提供的案例代码:

global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages
) );

上面的代码可以实现分页效果,但是在实际使用中不太方便,要每次在显示分页的地方添加这个代码及修改参数。为了更加方便在wordpress主题中的使用,我们可以将这个分页代码写入一个颁布函数中,这样,我们在使用分页原地方就只需调用这个分页函数就可以了,效果如高时银博客的分页效果。

wordpress分页函数代码如下:

function wp_pagenavi() {
//先申明两个全局变量
global $wp_query, $wp_rewrite;
//判断当前页面
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages, //总共显示的页码数
'current' => $current, //当前页码数
'show_all' => false, //是否将所有页码都显示出来,需配合下两个参数
'type' => 'plain',
'end_size'=>'1', //在最后面和最前面至少显示多少个数,
'mid_size'=>'3', //在当前页码的前后至少显示多少个页码数
'prev_text' => '上一页', //是否显示“上一页”“下一页”链接
'next_text' => '下一页'
);

if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');
if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array('s'=>get_query_var('s'));
echo paginate_links($pagination);
}

将上面的代码放到wordpress主题的functions.php文件中,这样,我们就为wordpress主题添加了文章列表分页功能。但是,在前台要想显示分页,我们还要在前台页面文件中调用这个函数,一般wordpress主题的首页(index.php)、分类页(category.php)、搜索页(search.php)、标签列表页(tags.php)需要用到这个分页,我们可以在这些页调用这个分页函数,代码如下:

<?php wp_pagenavi(); ?>

当然,上面只是实现了分页效果,分页的显示样式还要我们通过CSS来实现,这里不是本章的讲解的内容,就不多说了。

猜你喜欢

转载自blog.csdn.net/james_laughing/article/details/88941835