A-A+

WordPress修改代码实现分页功能

2010年03月06日 WordPress 评论 3 条 阅读 3,856 次

找到一个不用插件就可以实现分页功能的办法,测试发现可以用,就把修改过程做下记录。这个方法适用用大部分主题,直接复制添加就可以了。

1、首先找到当前使用主题目录下的functions.php文件,打开在<?php后添加以下代码

// pagenavi Start---------------------------
function wp_pagenavi($before = '', $after = '', $prelabel = '', $nxtlabel = '', $pages_to_show = 5, $always_show = false) {
global $request, $posts_per_page, $wpdb, $paged;
if(empty($prelabel)) { $prelabel = '<strong>上一页</strong>';
} if(empty($nxtlabel)) {
$nxtlabel = '<strong>下一页</strong>';
} $half_pages_to_show = round($pages_to_show/2);
if (!is_single()) {
if(!is_category()) {
preg_match('#FROM\s(.*)\sORDER BY#siU', $request, $matches); } else {
preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches); }
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");
$max_page = ceil($numposts /$posts_per_page);
if(empty($paged)) {
$paged = 1;
}
if($max_page > 1 || $always_show) {
echo "$before <div class='pagers'><span>当前第 $paged / $max_page 页 : </span>"; if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">&laquo; 首页</a>'; }
previous_posts_link($prelabel);
for($i = $paged - $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) { if ($i >= 1 && $i <= $max_page) { if($i == $paged) {
echo "<strong>$i</strong>";
} else {
echo '<a href="'.get_pagenum_link($i).'">'.$i.'</a>'; }
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo '<a href="'.get_pagenum_link($max_page).'">最后 &raquo;</a>'; }
echo "</div> $after";
}
}
}
// pagenavi End---------------------------

初看这段代码是不是少了什么,呵呵,这只是显示问题,我用pre code标签禁用过,复制粘贴后会全部显示的。

2、在index.php、archive.php…等需要分页的页面中:
把<?php wp_pagenavi() ?>

替换到类似下面这段代码中

<div><?php previous_post_link('<strong>上一篇: </strong> %link') ?></div>  <div><?php next_post_link('<strong>下一篇: </strong> %link') ?></div></div>

3、在style.css中加入:

/* wp_pagenavi */
.pagers{height:25px;color:#000;padding:2px 0;margin:0;text-align:center;}
.pagers a,.pagers strong{margin:0 2px;padding:2px 5px;}
.pagers a{border:1px solid #090}
.pagers strong{border:1px solid #06f}

由于本站之前使用的V3主题和这个方法有点冲突,所以在添加代码时讲汉字部分全修改成英文。
 另外感觉这个办法复杂的,可以用插件WP-PageNavi或者插件WP-PageBar来实现分页功能。

3 条留言  访客:3 条  博主:0 条

  1. avatar 阿超

    能说的清楚一点吗

  2. avatar 型男索女

    怎么用都用不起来,汗

  3. avatar 洪伟博客

    好东西!谢谢分享了! /鼓掌

给我留言

Copyright © 随缘博客 保留所有权利.   Theme  

用户登录

分享到: