教你不用插件实现WordPress主题分页功能
说到wordpress,使用时间也一年多了,虽然这个程序自身不具备纯静态功能,但是他的伪静态功能也不错,再加上设置的自由,我还是比较喜欢的,有可能是设置的随意性比较灵活吧,相对来说还是比较符合SEO优化的,总是对wordpress情有独钟,但是也有不尽人意的地方,今天我们就来分享一个小知识点,如果你也喜欢,一起来研究一下吧。
wordpress程序的网站默认主题是没有分页功能的,这使得网站首页篇幅相当大,给人造成一种感觉,就是一个博客站,虽然有分隔标签可以隐藏一部分在首页显示的内容,但是文章数量多了页面篇幅一样会很长,那么有没有办法让首页实现想看后面的文章不用拉得很靠下面就可以看到呢?有,做个首页分页就可以了。通过一些插件可以实现,但是网站插件安装多了必然会影响加载速度。
越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题,本站目前的新主题基本实现了零插件。网上不使用插件实现WordPress功能的文章也很多,今天再补一个不使用插件实现翻页功能的函数代码。
WordPress默认翻页功能很弱,一页页翻,弄到你手麻,所以类似wp-pagenavi翻页插件,几乎是WordPress博客必装的插件,也是普及率很高的一款插件。
虽然网上有如何把wp-pagenavi插件集成到WordPress主题的教程,但wp-pagenavi插件函数代码拖沓,只是变相启用插件而已,并没有真正脱离wp-pagenavi插件。下面一段轻量级的函数,加上寥寥数行css样式就可以完全替代分页插件了。
具体实现方法:
首先将下面一段函数代码添加到主题的functions.php模板文件中:
- function kriesi_pagination($query_string){
- global $posts_per_page, $paged;
- $my_query = new WP_Query($query_string ."&posts_per_page=-1");
- $total_posts = $my_query->post_count;
- if(empty($paged))$paged = 1;
- $prev = $paged - 1;
- $next = $paged + 1;
- $range = 2;
- $showitems = ($range * 2)+1;
-
- $pages = ceil($total_posts/$posts_per_page);
- if(1 != $pages){
- echo "<div class='pagination'>";
- echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)? "<a href='".get_pagenum_link(1)."'>最前</a>":"";
- echo ($paged > 1 && $showitems < $pages)? "<a href='".get_pagenum_link($prev)."'>上一页</a>":"";
-
- for ($i=1; $i <= $pages; $i++){
- if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
- echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
- }
- }
-
- echo ($paged < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($next)."'>下一页</a>" :"";
- echo ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($pages)."'>最后</a>":"";
- echo "</div>\n";
- }
- }
接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:
- <?php kriesi_pagination($query_string); ?>
最后再把下面的样式代码添加到style.css中,刷新一下页面,与使用插件实现的翻页效果一样。
- .pagination{
- line-height:23px;
- }
- .pagination span, .pagination a{
- font-size:12px;
- margin: 2px 6px 2px 0;
- background:#fff;
- border:1px solid #e5e5e5;
- color:#787878;
- padding:2px 5px 2px 5px;
- text-decoration:none;
- }
- .pagination a:hover{
- background: #8391A7;
- border:1px solid #fff;
- color:#fff;
- }
- .pagination .current{
- background: #fff;
- border:1px solid #8d8d8d;
- color:#393939;
- font-size:12px;
- padding:2px 5px 2px 5px;
- }
上面的样式是我目前用的主题样式,根据不同的主题修改一下边框与背景,基本就可以了,做好之后就可以删除你的分页插件,试一下吧!