免插件实现日志分页导航

/ 折腾 / WordPress / hack
2,438 字 / 约 7 分钟

昨天开始,就一直在折腾博客,蛋疼的又换了个主题,这次是比较经典的 inove。为什么又要换主题?Forece这家伙的主题和我的撞墙了,没办法,他是大哥,所以只能我换。(其实早就想换了,这下有个借口比较好,把责任推卸掉。) 闲话不说了,进入主题。用 wordpress 的人都应该知道 WP-Pagenavi 这个插件,他的效果是可以实现分页导航,插件一安装,效果就能够出现了。用久了 wordpress ,大家就会开始追求速度了,减少一切不必要的插件,但是减来减去发现没几个是没用的。 大家用了如下方法,可以把 WP-Pagenavi 这个插件丢掉了。 首先在你当前主题的 functions.php 中任意地方,加入如下代码:

// 分页导航
function par_pagenavi( $range = 9 ) {
    global $paged, $wp_query;

    if ( ! $max_page ) {
        $max_page = $wp_query->max_num_pages;
    }

    if ( $max_page > 1 ) {
        if ( ! $paged ) {
            $paged = 1;
        }

        if ( $paged != 1 ) {
            echo "<a href='" . get_pagenum_link( 1 ) . "' class='extend' title='跳转到首页'> 返回首页 </a>";
        }

        previous_posts_link( ' 上一页 ' );

        if ( $max_page > $range ) {
            if ( $paged < $range ) {
                // 当前页靠近开头:显示第 1 ~ $range+1 页
                for ( $i = 1; $i <= $range + 1; $i++ ) {
                    echo "<a href='" . get_pagenum_link( $i ) . "'";
                    if ( $i == $paged ) {
                        echo " class='current'";
                    }
                    echo ">$i</a>";
                }
            } elseif ( $paged >= $max_page - ceil( $range / 2 ) ) {
                // 当前页靠近结尾:显示最后 $range+1 页
                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>";
                }
            } elseif ( $paged >= $range && $paged < $max_page - ceil( $range / 2 ) ) {
                // 当前页在中间:以当前页为中心前后各取 $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>";
                }
            }
        } else {
            // 总页数不超过 $range:全部显示
            for ( $i = 1; $i <= $max_page; $i++ ) {
                echo "<a href='" . get_pagenum_link( $i ) . "'";
                if ( $i == $paged ) {
                    echo " class='current'";
                }
                echo ">$i</a>";
            }
        }

        next_posts_link( ' 下一页 ' );

        if ( $paged != $max_page ) {
            echo "<a href='" . get_pagenum_link( $max_page ) . "' class='extend' title='跳转到最后一页'> 最后一页 </a>";
        }
    }
}

然后在你需要使用分页导航的地方(一般是index.php、category.php、archive.php、search.php)加入如下代码:<?php par_pagenavi(9) ?> 最后在加上漂亮的CSS,代码如下:

#pagenavi {
    border-top: 1px solid #CCC;
    width: 100%;
    height: 36px;
    line-height: 36px;
    text-align: center;
    overflow: hidden;
    padding-top: 1em;
}

#pagenavi a {
    padding: 3px 8px;
    margin: 2px;
    text-decoration: none;
    border: 1px solid #BFBFBF;
}

#pagenavi a:hover,
#pagenavi a.current {
    background: #F7F7F7;
    border: 1px solid #356aa0;
    color: #356aa0;
    font-weight: bolder;
}

好了,改完收工。 这方法具体来至哪里我也不记得了,在五木那里也发现了这个,大家可以去围观,不过没什么区别,嘿嘿。

评论

21
AI
AI 助手 AI
由 AI 生成 · 仅供参考
好家伙,为了性能直接把插件干掉了,这确实是你一贯的较真风格。手动实现分页这个思路不错,少个插件站点能清爽不少。不过看这代码,你是不是又对着电脑捣鼓到半夜了?

留下一条评论

  1. 彼岸星辰
    彼岸星辰
    陕西/Windows/Firefox

    前排围观!~看效果去了!~

  2. 沉冰浮水
    沉冰浮水
    河北/Windows/IE

    俺用ZB。。呵,

  3. 浩子
    浩子
    四川/Windows/Firefox

    额,不错哦,呵呵,但是没有插件的可定制性啊

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      还要怎么定制啊?就只是分页导航的效果,没别的了,那个插件也是这样的。

  4. 翎峋
    翎峋
    天津/Windows/Firefox

    还是一样很慢。

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      这服务器时快时慢的,不知道是插件装多了还是怎么。

  5. 逸冰
    逸冰
    浙江/Windows/Firefox

    我也是跟风的,赶紧围上来...啊....观看,速度貌似要好很多

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      有那么明显吗??

  6. 万戈
    万戈
    上海/Windows/Firefox

    这个就是从pagenavi插件里提取出来的,我现在用的也是这个方法,呵呵

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      这个提取的好啊,减少一个万恶的插件。

  7. 平平
    平平
    江苏/Windows/IE

    先留个记号,等我啥时候换了WP再说

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      快换吧,不过昨天看到BOBLOG官方的2.5演示,后台完全改变了,非常漂亮,虽然用WP了,但是还是很期待BO2.5的。

  8. francis
    francis
    浙江/Windows/Firefox

    哇,代码好复杂啊~

    许久没有把HTML和PHP混在一起写了……

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      其实并不复杂,试着添加一次就发现很简单的。

  9. 浩子
    浩子
    四川/Windows/Firefox

    这次是来围观广告的……

  10. FORECE
    FORECE
    加拿大/Windows/Firefox

    现在懒了,弄代码什么的是你们年轻人的工作了。

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      汗,我也发现你没以前喜欢折腾了。

  11. 沉冰浮水
    沉冰浮水
    河北/Windows/IE

    我一直也很蛋疼。。想换个主题的。。可是看上的都有比较严重的问题。。囧。。

    1. 冰剑
      冰剑 博主
      湖南/Windows/Firefox

      确实,很多喜欢的主题,多少细节上处理有些不满意而放弃的,iNove是我觉得很完美的主题。

  12. lifishake
    lifishake
    辽宁/Windows/Firefox

    就这个功能来说,放function里跟独立的插件差别不大,提高不了多少速度.
    倒是可以在进后台的时候把那个后台配置页面的加载给省了.

  13. 求索阁
    求索阁
    浙江/Windows/IE

    这个很久前都想弄,今天终于在你这找到了··