WordPress添加分页导航-非插件

时间: 2012-06-11 / 分类: WordPress / 浏览次数: 861 views / 7个评论 发表评论

WordPress下的分页插件很多, 像PageNavi, Pagebar, WP Page Numbers等等, 这些插件能够让你的Wordpress增加多样式的导航, 同时也带上一定的样式效果.

其实, 实现这个功能并不困难

我们完全可以自己完成, 看看下面的代码就可以知道我们自己完成的分页导航有多简单了, 但是代码精简不代表样式不好看.

第一步:就是打开主题的index.php, 找到类似于下面的默认分页代码

 

<div class="page_navi">
 <?php if(
 function_exists('wp_pagenavi')) { wp_pagenavi();
 }
 else { ?>
 <div class="pageleft"><?php previous_post_link('<strong>上一篇: </strong> %link') ?></div>
 <div class="pageright"><?php next_post_link('<strong>下一篇: </strong> %link') ?></div>
 <?php } ?>
 </div>

这段代码的前面一般会有<!– Navigation begin –>的注释提示

第二步:在CSS内相对应的样式表.

例如上面的例子, 我们搜索的就是”page_navi ” 然后用如下代码覆盖原始代码

.page_navi{width:100%;height:36px;line-height:36px;text-align:center;overflow:hidden;padding-top:1em;} 
.page_navi a{padding:3px 8px;margin:2px;text-decoration:none;color:#888;border:1px solid #ccf;} 
.page_navi a:hover,.page_navi a.current{border:1px solid #356aa0;color:#356aa0;font-weight:bolder;}

注意,如果你的不是”page_navi”,那么上段代码中的”.page_navi”全部改成刚才搜索的关键词

第三步:打开主题的functions.php, 加上下面的函数

//Pagenavi
function par_pagenavi($range = 9){
 // $paged - number of the current page
 global $paged, $wp_query;
 // How much pages do we have?
 if ( !$max_page ) {
 $max_page = $wp_query->max_num_pages;
 }
 // We need the pagination only if there are more than 1 page
 if($max_page > 1){
 if(!$paged){
 $paged = 1;
 }
 echo '<span><strong>导航页码:&nbsp;&nbsp;&nbsp;</strong>'.$paged.' / '.$max_page.'</span>';
 // On the first page, don't put the First page link
 if($paged != 1){
 echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳转到首页'> 返回首页 </a>";
 }
 // To the previous page
 previous_posts_link(' « ');
 // We need the sliding effect only if there are more pages than is the sliding range
 if($max_page > $range){
 // When closer to the beginning
 if($paged < $range){
 for($i = 1; $i <= ($range + 1); $i++){
 echo "<a href='" . get_pagenum_link($i) ."'";
 if($i==$paged) echo " class='current'";
 echo ">$i</a>";
 }
 }
 // When closer to the end
 elseif($paged >= ($max_page - ceil(($range/2)))){
 for($i = $max_page - $range; $i <= $max_page; $i++){
 echo "<a href='" . get_pagenum_link($i) ."'";
 if($i==$paged) echo " class='current'";
 echo ">$i</a>";
 }
 }
 // Somewhere in the middle
 elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
 for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){
 echo "<a href='" . get_pagenum_link($i) ."'";
 if($i==$paged) echo " class='current'";
 echo ">$i</a>";
 }
 }
 }
 // Less pages than the range, no sliding effect needed
 else{
 for($i = 1; $i <= $max_page; $i++){
 echo "<a href='" . get_pagenum_link($i) ."'";
 if($i==$paged) echo " class='current'";
 echo ">$i</a>";
 }
 }
 // Next page
 next_posts_link(' » ');
 // On the last page, don't put the Last page link
 if($paged != $max_page){
 echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳转到最后一页'> 最后一页 </a>";
 }
 }
 }

这段代码可以显示9页的分页, 可以自己修改需要的数目.

最后一步:添加调用代码至主题index.php、archive.php、category.php、search.php

<div><?php par_pagenavi(9); ?></div>

添加这句代码时,一般是替换原有的<!– Navigation begin –>与<!– Navigation end –>之间的代码,如果没有,你就自己添加上句代码就可以了,具体位置自己调整

 

具体效果看看我的博客就可以了

 



.

*******************************************************************

上面是广告! 真的是广告!! 真的真的啊!!!

    • 呵呵~我一开始也是用插件~后来就觉得插件多了会拖累网站加载速度,就开始慢慢减少插件了

-----------------------------------------------------Copyright © 2011-2012--浙ICP备12011997---------------------------- ---------------------- ------------------------

无觅相关文章插件,快速提升流量