乌徒帮技术范WordPressWordPress内核 › wordpress分页导航详解:paginate_links

wordpress分页导航详解:paginate_links

分类:WordPress内核

wordpress首页和归档等文章列表页面都会用到分页的功能,系统默认的没有给出分页函数,需要我们自己通过插件pagenavi或自己添加分页函数,否则只能使用系统“较新的文章”“较老的文章”两个连接了。本文告诉读者,如何创造自己的分页链接,使用paginate_links函数,实现wordpress分页导航,并希望告诉读者哪些情况下使用导航更加合适。

一、paginate_links函数讲解

paginate_links函数是wordpress核心的分页函数,但并不用在loop循环上,它是一个独立的有输出格式的函数,请看官方文档

$args?=?array(
'base'?????????=>?'%_%',
'format'???????=>?'?page=%#%',
'total'????????=>?1,
'current'??????=>?0,
'show_all'?????=>?False,
'end_size'?????=>?1,
'mid_size'?????=>?2,
'prev_next'????=>?True,
'prev_text'????=>?__('«?Previous'),
'next_text'????=>?__('Next?»'),
'type'?????????=>?'plain',
'add_args'?????=>?False,
'add_fragment'?=>??);

echo?paginate_links(?$args?)

它以独特的方式,你只需要告诉它你要使用什么链接格式(format)总共有多少页(total)当前第几页(current)基本就能呈现一个分页导航了。它把current对应的值放在一个<span>中,其他页放在<a>中,用format的格式添加链接,最大页数是total。对于整个函数来说,你可以随意放在什么地方它都能呈现出这种导航链接出来,而无需和wordpress的文章列表结合起来。

当然,我们当然需要和各种列表结合起来,无论是相关文章还是随机文章,以及乌徒帮首页实现的评论列表的分页。下面,我们就来讨论将该函数和wordpress文章列表结合起来,创建一个首页的分页列表。

首先,你需要获得一些值:

当前页:$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;

文章总数:$count_posts = wp_count_posts();

每页显示的数量:$per_page_num = get_option('posts_per_page');

总共会有多少页:$total_page = $count_posts/$per_page_num + 1;

乌徒帮的链接形式:'/page/%#%'

那么最后,我们得到了我们自己的分页导航:

$page_links = paginate_links(array(
'base' => add_query_arg( 'paged', '%#%' ),
'format' => '/page/%#%',
'total' => $total_page,
'current' => $current_page,
'prev_text' => '上一页',
'next_text' => '下一页'
));
if($page_links)echo $page_links;

当然,本文讲的其实很初浅,用“详解”骗得了大家的眼球,在其他很多地方,还需要很多的考虑,但主题代码就这些,其他代码往往是为了获取这几个对应的值而进行复杂的逻辑判断。

在使用上,只要你能得到上面的那些值,可以完全根据自己的情况自由发挥,例如和ajax结合(乌徒帮首页所用)实现局域性的相关文章翻页等效果。

填写个人信息,赶快回复吧!