Loading...

无插件实现WordPress分页导航功能

最近比较喜欢折腾,今天又折腾了快一天。现在追求速度,必然要对进行优化。看看插件还是比较多的,但一直觉得WP-PageNavi插件实现的WordPress分页导航是个小功能,没必要用插件形式实现。所以在网上挖了很多代码,试了好几个,就下面这个还是比较理想,并根据inove主题进行适当修改,至于出处,我也想不想在哪里找的,所以共享吧。

用代码替换WP-PageNavi插件实现WordPress分页导航功能的具体方法:

第一步:将下面一段函数代码添加到主题的functions.php文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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; // only edit this if you want to show more page-links
$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";
}
}

第2步:用下面前台调用的代码:

<?php kriesi_pagination($query_string); ?>

替换主题下的index.php和archive.php中的默认翻页代码或分页插件代码:

<div id="pagenavi">
	<?php if(function_exists('wp_pagenavi')) : ?>
		<?php wp_pagenavi() ?>
	<?php else : ?>
		<span class="newer"><?php previous_posts_link(__('Newer Entries', 'inove')); ?></span>
		<span class="older"><?php next_posts_link(__('Older Entries', 'inove')); ?></span>
	<?php endif; ?>
	<div class="fixed"></div>
</div>

第3步:再把下面的样式代码添加到style.css中,使分页键有比较好看的外观。

/*page navigation*/
.pagination{
line-height:23px;
background:url(img/icons.gif) 0 -272px no-repeat;
padding-left:22px;
float:left;
}
.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;
}

无插件实现WordPress分页导航功能其实很简单,前辈们都已给出代码,只要有折腾精神就行。另外特别提醒,折腾前对文件要备份,以防万一。

无觅相关文章插件

  1. August 25th, 2010 at 16:06 | #1

    避免一下插件其实是有好处的,但是一句“替换inove主题下”就把整篇帖子给锁定范围了。。。。

    [Reply]

  2. alexin
    August 25th, 2010 at 16:08 | #2

    @ A.L
    灰常有道理,决定修改之,谢谢提醒。

    [Reply]

  3. May 20th, 2011 at 21:24 | #3

    :?: 我的主题里没有archive.php怎么办啊

    [Reply]

  4. May 30th, 2011 at 22:34 | #4

    非常感谢。。我的网站有导航了。。 :wink: :wink: :roll: :roll: :roll: :roll: :roll: :twisted: :twisted: :lol: :lol:

    [Reply]

  5. May 30th, 2011 at 23:11 | #5

    可是在自己机子可以。。传到网站就不行了。。郁闷。。

    [Reply]

  1. No trackbacks yet.
疑问 冷笑 悲伤 坏蛋 感叹 微笑 脸红 大笑 吃惊 惊讶 困惑 酷 大声笑 恼火 古怪 转眼睛 给眼色 好主意 箭头 一般 哭了 绿人