北极寒流 » 网络资源 » 抛弃Pagenavi-实现免插件文章翻页功能 - 2010.08.16

抛弃Pagenavi-实现免插件文章翻页功能

现在几乎所有的WordPress博客都有文章翻页功能吧?不过WordPress原版的翻页功能有点脑残,它默认是下一页下一页这样一页一页的翻。文章多的话,翻页都可以把你也翻成脑残的。所以很多人都采用Pagenavi翻页插件来实现WordPress文章翻页功能,不过WordPress插件装多了又会影响博客速度,遂决定还是采用代码实现文章翻页功能。如果你和我一样同样有WordPress插件洁癖的的话,那你也可以尝试折腾一下WordPress。

经壹品集测试使用下面的免插件文章翻页代码完全可以代替Pagenavi翻页插件,效果相当不错。

 免插件实现文章翻页功能具体方法:

1. 把下面的代码都扔到主题的 functions.php 里面:注意要放在 <?php ... ?> 里面

/* Mini Pagenavi v1.0 by Willin Kan. Edit by zwwooooo */
if ( !function_exists('pagenavi') ) {
    function pagenavi( $p = 5 ) { // 取当前页前后各 2 页
        if ( is_singular() ) return; // 文章与插页不用
        global $wp_query, $paged;
        $max_page = $wp_query->max_num_pages;
        if ( $max_page == 1 ) return; // 只有一页不用
        if ( empty( $paged ) ) $paged = 1;
        echo '<span class="pages">Page: ' . $paged . ' of ' . $max_page . ' </span> '; // 显示页数
        if ( $paged > 1 ) p_link( $paged - 1, '上一页', '« Previous' );/* 如果当前页大于1就显示上一页链接 */
        if ( $paged > $p + 1 ) p_link( 1, '最前页' );
        if ( $paged > $p + 2 ) echo '... ';
        for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // 中间页
            if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class='page-numbers current'>{$i}</span> " : p_link( $i );
        }
        if ( $paged < $max_page - $p - 1 ) echo '... ';
        if ( $paged < $max_page - $p ) p_link( $max_page, '最后页' );
        if ( $paged < $max_page ) p_link( $paged + 1,'下一页', 'Next »' );/* 如果当前页不是最后一页显示下一页链接 */
    }
    function p_link( $i, $title = '', $linktype = '' ) {
        if ( $title == '' ) $title = "第 {$i} 页";
        if ( $linktype == '' ) { $linktext = $i; } else { $linktext = $linktype; }
        echo "<a class='page-numbers' href='", esc_html( get_pagenum_link( $i ) ), "' title='{$title}'>{$linktext}</a> ";
    }
}
// -- END ----------------------------------------

2. 在页面(index.php、home.php、archive.php等)的适当位置添加函数调用

<?php if (function_exists('pagenavi')) { pagenavi(); } ?>

3. 导航样式css参考:

.page-numbers{line-height:16px;margin:0;padding:3px 5px;text-decoration:none;background:#fff;border-top:2px solid #fff;}
.page-numbers:hover{border-top:2px solid #ff00a4;}
.current,.current:hover{color:#fff;background:#45b9f6;border-top:2px solid #45b9f6;}
.current:hover{border-top:2px solid #00679d;}

折腾完了,又干掉一个Pagenavi翻页插件了。

至于翻页效果看壹品集博客首页底部的页面导航吧。当然我博客上的css样式和现在文章中写的有点不一样。css视个人不同模板自行修改。

资料来源:http://zww.me/archives/25180

评论关闭