不用插件也可以分页

paginaton

精博原先的主题 typoxp-reloaded 的主页和分类页面是自带分页导航条功能的,后来换了现在这个新主题后,主页和分页就只剩下“下一页”和“上一页”这样的链接了。

我之前有尝试过 WP-PageNavi 插件,但是却没有见效,后来发现原来没有把主题上的以下代码删掉:

  1. <ul class="lead">
  2. <li class="prev"><?php next_posts_link(’PREVIOUS POSTS’) ?></li>
  3. <li class="next"><?php previous_posts_link(NEXT POSTS’) ?></li>
  4. </ul>

当我找到问题出在哪里之前,我发现了一个可以不使用插件就能够实现分页导航条功能的方法。

Smashing Magazine 发表了一篇《10 Killer WordPress Hacks》,里面介绍了通过修改代码的方法实现一些特殊的功能,其中就有如何实现分页功能的介绍。原文写得很好,下面是译文。

提出问题:

默认情况下,WordPress 具有显示上一页和下一页的链接功能。这总比什么都没有好,但是我不明白为什么 WordPress 那些人不直接把分页导航条作为默认分页功能呢。当然,我们可以通过插件来实现分页导航条的功能,但是如果直接在主题上插入代码来实现这个功能呢?

解决方法:

实现这个功能需要用到 WP-PageNavi 插件并把它直接插入到所用的主题。

1、明显,你首先需要下载 WP-PageNavi 插件。

2、解压后,把 wp-pagenavi.phppagenavi-css.css 这两个文件上传到你的主题目录。

3、打开你想插入分页导航条的文件(例如 index.php、categories.php、search.php,等等),并且找到以下代码:

  1.    <div class="navigation">
  2.  
  3.     <div class="alignleft"><?php next_posts_link(‘Previous entries’) ?></div>
  4.  
  5.     <div class="alignright"><?php previous_posts_link(‘Next entries’) ?></div>
  6.  
  7.     </div>
  8.  

(主题不同,可能代码不同。例如精博的代码就是文章开头那些。)

把上面的代码替换成下面这些代码:

  1.    <?php
  2.  
  3.     include(‘wp-pagenavi.php’);
  4.  
  5.     if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); }
  6.  
  7.     ?>
  8.  

4、现在我们需要修改 WP-PageNavi 插件文件。先打开 wp-pagenavi.php 文件,然后找到下面这些代码(在第61行):

  1. function wp_pagenavi($before = , $after = ) {
  2.         global $wpdb, $wp_query;

我们需要调用 pagenavi_init() 功能,所以把上面的代码修改成:

  1. function wp_pagenavi($before = , $after = ) {
  2.         global $wpdb, $wp_query;
  3.         pagenavi_init(); //Calling the pagenavi_init() function

5、基本上完成了。最后是把 wp-pagenavi 样式表添加到你的博客。打开 header.php 并添加以下一行代码:

  1. <link rel="stylesheet" href="<?php echo TEMPLATEPATH.’/pagenavi-css.css’;?>" type="text/css" media="screen" />

代码解释:

这个方法几乎是简单地把插件文件直接添加到主题文件里,同时需要执行调用 pagenavi_init() 功能,以确保分页导航条可以正常显示。

(我在这个基础上,把分页导航条的位置和背景色改了下,效果就如精博现在这个样子。)

更新:原文中所说的 pagenavi.css 应该全部改为 pagenavi-css.css.

相关博文:

  1. 这个代码只能用于模板?
  2. 牛逼分页导航插件 Paginator
  3. 在博客侧边栏显示热门文章的三种方法
  4. WordPress 主题之搜索模板和静态页面模板
  5. WordPress 主题之存档、作者、分类和标签模板

此文发表于 博客技术 以及标签 , ; 收藏永久链接. 发表评论或者留下引用: 引用链接.
Post comment as twitter logo facebook logo
Sort: Newest | Oldest

不错的主意
记下了
呵呵
.-= 龙城瓶子&#180;s last blog ..《2010年央视春晚节目单》 =-.

RSS Reader 里是"另类分页导航条",实际上是"不用插件也可以分页"..
你这里说的太折腾啦!!完全没必要,只要装&amp;激 WP-PageNavi..
然后在需要的地方插入那段
if(function_exists(’wp_pagenavi’)) { wp_pagenavi(); }

就算是按文章方法,也是装了插件,只不过没有在插件管理页面出现而已..

不错的主意
记下了
呵呵
.-= 龙城瓶子´s last blog ..《2010年央视春晚节目单》 =-.

@Wanghui 哦,把最后面那段代码里面的 “pagenavi.css”改为“ pagenavi-css.css” 应该就没有问题了。

这个方法很好,我按照您的介绍试用后不起作用,无法出现分页导航,请问还需要什么注意地方吗?

@NetPuter:哈哈,刚刚改了题目。依你看,文章中的这个方法和直接使用WP-PageNavi插件相比,哪个对网站点速度影响较小呢?另外,你知道怎样“把WP-PageNavi 的核心代码写在主题的 functions.php 文件中”吗?我想那样做更加简洁。

我认为所谓的 不用插件也可以分页 的方法:
就是把 WP-PageNavi 的核心代码写在主题的 functions.php 文件中,然后在需要的地方调用就好啦!
感觉和我的一篇有点儿关系的说: http://orzdream.cn/2008/12/plugins-with-themes-pea...

RSS Reader 里是"另类分页导航条",实际上是"不用插件也可以分页"..
你这里说的太折腾啦!!完全没必要,只要装&激 WP-PageNavi..
然后在需要的地方插入那段
if(function_exists(’wp_pagenavi’)) { wp_pagenavi(); }

就算是按文章方法,也是装了插件,只不过没有在插件管理页面出现而已..

@welee:哈哈,那篇文章里面有十个方法,我喜欢的就是这个分页导航条以及那个“share to twitter”——我可能会卸载17fav。

@Young:我再仔细看了看,终于看明白了,就是不安装插件,而是把插件的代码直接 include 进主题模板中,对吧?呵呵,抱歉,最近我的理解能力似乎退步了。
这方法应该不错,可以尝试一下。

@welee:我是希望少裝一個插件而已。

看不明白 ...
这跟直接使用 wp-pagenavi 有什么不同?

@Tox:哈哈,效果就如精博現在這個樣子。

能上图吗?不知道效果怎么样