WordPress不使用插件实现分页
来源:互联网 发布:在线视频播放系统源码 编辑:程序博客网 时间:2024/06/05 10:02
WordPress默认的分页只有 “下一页”和 “上一页”. 如果你博客里面文章比较多,想让分页更好看一些的话那我建议你不要使用博客的默认链接,而是使用更漂亮点的分页导航.我的博客中使用的分页就是Habitat . 向下拉就可以在下面看见文章的分页按钮.为啥需要使用它们呢? 因为它们可以让你很简单的就知道文章的导航地址,很容易就知道有多少文章,有多少页.用户体验比较好 :)不过使用插件的话感觉很浪费服务器资源,因为只需要简单的几句php和css代码即可搞定,下面我就来介绍下怎么在主题里面不用插件实现分页吧:
先写方法名
如果你不想知道原因的话就直接复制下面的代码到主题的function.php文件去吧,不过我下面还是来介绍下这些代码:function kriesi_pagination($pages = '', $range = 2){ $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { echo "<div class='pagination'>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>«</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹</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>"; } } if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>›</a>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>»</a>"; echo "</div>n"; }}
怎么使用和一步一步的解释
早默认的page.php文件里面显示分页很简单,只需要下面的这句代码即可kriesi_pagination();加上就行了.这里有两个参数你可以加:
function kriesi_pagination($pages = '', $range = 2)
第一个是页面的数量: 这个一般在自定义循环查询文章的时候有用,下面我会解释的.第二个参数是设置显示多少链接的. 它用于控制在当前页面之前和之后所显示页面的数量然后再显示箭头. 比如默认的是2,如果你现在访问的是第一页,它就会显示后面两页然后就是箭头,大概是这个样子:
假如在上你想直接看到第四页的话,,并且第四页为当前页,那么前面就会显示第2、3页,后面显示第5、6页.其他的都会影藏:
我们把最大的数据保存到分散的变量里面去:
$showitems = ($range * 2)+1;接下来使用全局变量$paged. WordPress默认的会把当前的页面存储到这个全局变量里面去的. 如果此变量为空的话我们就设置为1. 为什么? 因为当前的页面应该不需要在下面的分页里面再加链接了, 应该显示为"当前被访问"的.
global $paged;if(empty($paged)) $paged = 1;现在就得到了当前的访问页面, 不过还得得到总共有多少页. 不过你要确保没有自定义循环查询文章,也就是说$pages在这代码之前是没有被使用的. 只有这样我们才能够再次得到最大的页码:
if($pages == ''){ global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; }}你看到了吧,除了一点逻辑之外我们仅仅只是使用了一个简单的 wordpress 方法 get_pagenum_link() 就搞定了,它可以通过传页码总数就能得到相应的链接地址,如: get_pagenum_link(2) 就会得到像上面所说的大于2页的时候的链接地址.按照我们上面所设定参数,现在通过一些if判断语句就可以获取那些内容需要显示. 我也经常详细得解说代码,不过赶脚在这里真的没必要了. 如果你真的想看懂上面的代码的话, 现在我也大概解释了变量的意思,所以理解去研究也不会很难:)
Css代码
css部分也很简单. 上面的默认分页大概会这样显示html:<div class='pagination'> <span class='current'>1</span> <a href="http://www.cnwordpress.com/blog/page/2">2</a> <a href="http://www.cnwordpress.com/blog/page/3">3</a> <a href="http://www.cnwordpress.com/blog/page/2">›</a> <a href="http://www.cnwordpress.com/blog/page/12">»</a></div>所以也只需要简单的几句css
.pagination {clear:both;padding:20px 0;position:relative;font-size:11px;line-height:13px;}.pagination span, .pagination a {display:block;float:left;margin: 2px 2px 2px 0;padding:6px 9px 5px 9px;text-decoration:none;width:auto;color:#fff;background: #555;}.pagination a:hover{color:#fff;background: #3279BB;}.pagination .current{padding:6px 9px 5px 9px;background: #3279BB;color:#fff;}
高级部分: 自定义文章查询
你或许可能会使用到 自定义查询 , 这个自定义查询的时候是不会默认存储在 $wp_query 对象里面的,我们之前是这么取得最大页码的:$pages = $wp_query->max_num_pages;不过在自定义里面是取不到的,所以你在调用的时候就必须要传入第一个参数.简单的举例吧:
<?php $additional_loop = new WP_Query("cat=1,2,3&paged=$paged"); ?><?php while ($additional_loop->have_posts()) : $additional_loop->the_post(); ?> <!-- 显示循环的主体部分... --><?php endwhile; ?>那你就需要这样调用了:
kriesi_pagination($additional_loop->max_num_pages);
感觉使用起来很方便的,不过也不用非要使用这个,你可以使用插件哦 ;)
- WordPress不使用插件实现分页
- wordpress 不使用插件 实现 页面静态化
- 非插件实现wordpress分页导航
- WordPress无插件如何实现文章分页
- wordpress jquery插件分页
- WordPress 非插件实现文章列表分页导航
- WordPress中无需插件实现文章列表分页
- 显示WordPress随机文章(不使用插件)
- 如何在JSP页面中不使用任何插件实现分页查询
- wordpress 自定义插件使用
- Rails2中使用will_paginate插件实现分页
- 使用Jquery.pagination插件实现分页
- WordPress 非插件日志分页效果
- 分页不使用框架的实现
- WordPress插件 | 在WordPress中使用FontAwesome
- thinkPHP5 使用laypage分页插件实现列表分页功能
- 使用Mybatis分页插件+前台EasyUI架构实现分页
- WordPress插件机制实现原理
- hdu 4756 Install Air Conditioning(MST+全边次小树,4级)
- Eclipse中Android项目Build path详解
- XSLT知识(2)
- Strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
- ORA-12541:TNS:无监听程序
- WordPress不使用插件实现分页
- Spring 之 Annotation-->>@Autowired & @Qualifier
- AutoCompleteTextView,MultiAutoCompleteTextView 自动补齐
- 骑士飞行棋C语言无指针版
- 选球博奕与动态规划(三)
- VS2010安装boost
- 关于Xcode4.3+禁用UseAutolayout
- 3d 建模工具
- 无限互联iOS项目视频教程 新浪微博2.8.实现主题Label_在线视频观看