2010年06月21日 116条评论

为 Mini Pagenavi 添加“上一页”、“下一页”链接

上次转载并自己加以折腾写了《willin 出品的 Mini Pagenavi 修改版》后,本来那时就想加入“上一页”、“下一页”的链接,但当时突然又偷懒了。

今天 A-shun 突然猛呼唤我,我以为他要给我钱,原来不是,是叫我帮忙为 Mini Pagenavi 加上“上一页”、“下一页”的链接,进一步完善并向页面导航插件靠齐。他的目的不是给我钱,是因为浏览器(Opera)有超级快进、预读、自动拼接页面的功能,所以那个链接很有必要。

于是乎,在本地稍加修改测试就搞定了,改了下函数,下面贴出,需要的朋友折腾玩玩吧。

1. 把下面的代码都扔到主题的 functions.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;}

效果看我博客首页底部的页面导航吧。

写完,现在葡萄牙:朝鲜的比分为 7:0,葡萄牙赢定了——废话,C罗终于进球了,而且这个进球很有趣。

zww
or
oooo

“为 Mini Pagenavi 添加“上一页”、“下一页”链接”有116条评论

  1. [...] 资料来源:http://zww.me/archives/25180 关键字: Pagenavi, WordPress, 免插件, 免插件文章翻页, 文章翻页, 翻页插件 上一篇 超大20G支持图片外链的免费图片存储空间 ◎本站提供的所有资源均来源于网络,版权归原作者所有。仅供交流分享之用,请勿用于商业用途。 ◎一切商业形式的运用均与本站无关,涉及版权问题的资源请于下载后24小时内删除,建议购买正版。 喜欢壹品集的文章吗?那就通过 RSS Feed 功能订阅阅读吧! [...]

  2. [...] 免插件评论框表情--实现方法见“WP 表情符號” 免插件实现分页--"为 Mini Pagenavi 添加“上一页”、“下一页”链接" Tagged with: [...]

  3. lvshihao says:

    这段代码是直接丢到index.php里么 还是没有实现分页啊

    1. zwwooooo says:

      @lvshihao
      你搞错了,请认真看文章。

    2. lvshihao says:

      @zwwooooo
      不好意思 我是新手 很想实现分页 但第二步那个代码不知道怎么调用

    3. zwwooooo says:

      @lvshihao
      直接把

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

      copy到home.php(如果有的话)、index.php、archive.php要显示的地方

  4. zigbee says:

    :razz: :razz: :smile: 代码拿走了,现在用上了。谢谢!

  5. chnmcy says:

    用大师的原版的有点小问题需要解决
    等解决了再向外扩展吧 :lol:

    1. zwwooooo says:

      @chnmcy
      有啥问题?

    2. chnmcy says:

      @zwwooooo
      我是用在情侣主题上面
      SO就有了两个作者
      想在男的这面显示一个作者文章的分页
      相应女的这面显示另一个分页
      不是代码达人所以

    3. zwwooooo says:

      @chnmcy
      哦,应该加个作者限制即可。

    4. chnmcy says:

      @zwwooooo 呵呵一针见血呀
      现在就是要看看具体怎么限制了
      原程序应该有这方面的代码
      但代码不太懂
      所以搞起来费劲

    5. zwwooooo says:

      @chnmcy
      有的,重新配置一下query_posts的参数,看看你的主题,然后去wp官方查询query_posts的参数格式。

  6. 我发现这段迷你翻页代码有点小问题,我现在用的代码应该说就是从你这里copy的,只是CSS有点不同,在我博客上当页面只有10页时没什么问题,当页面达到10页面以上时,发现点击中间几个页面,例如我点击第3、4、5、6这样的页面,他会把所有的页面显示出来(也就是说不出现中间省略的情况),这样在我的博客就出现问题了,因为我那个页面的位置不够宽,所以多出的页面就会跑到下面一行,严重影响美观,不知道有什么地方可以修改一下?尝试调整function pagenavi( $p = 5 )这里的数值,还是一样,在你博客上其实也是有此问题的,不过可能你的页面比较宽,所以不影响。

  7. 你可以点开我的http://www.epinv.com/page/5这样的页面帮忙看看

  8. 汗,再试了一下,原来function pagenavi( $p = 5 )把这里的值调小可以了,开始只是调大,不懂PHP,看不懂那句啥意思

    1. zwwooooo says:

      @亿品元素
      :arrow: 难怪我这没你说的问题

  9. [...] 如果要顯示當前頁及總頁數, 將標注那行最前面兩斜線刪除即可. 如果要顯示 ‘上一頁’ 及 ‘下一頁’, 請參考《ZWWoOoOo 的修改版》. [...]

  10. wordpress主题修改时参考的一些文章 | 八万光年 says:

    [...] 为 Mini Pagenavi 添加“上一页”、“下一页”链接 [...]

  11. [...] Kan大师之手,后来由zwwooooo完善其功能, [...]

  12. [...] 如果要显示当前页及总页数, 将标注那行最前面两斜线删除即可。 如果要显示 ‘上一页’ 及 ‘下一页’, 请参考《ZWWoOoOo 的修改版》。 [...]

  13. 抛弃WP-PageNavi免插件wordpress文章翻页功能_有点技术_天天博客 says:

    [...] 原文地址:http://zww.me/archives/25180 有点技术 wordpress, WP-PageNavi, 文章翻页 [...]

  14. 1夜明 says:

    :mrgreen: 不错 已经用上
    感谢提供代码 还有样式 呵呵

    1. zwwooooo says:

      @夜明
      不用谢,谢willin的原创吧

  15. 1晓风 says:

    兄弟,试过好多种方法,包括你这种,还是无法实现我要的功能。比如首页遍历五篇文章就分页,分类页面遍历十篇文章就分页。

    <?php query_posts('category_name=show_case&posts_per_page=2&caller_get_posts=1'); ?>

    我加了这句,虽然有分页了。但是点击下一页的或者第二页的时候就是未找到页面,也就是到了404页面了。
    具体这个功能有没有完整的代码呢?

    1. zwwooooo says:

      @晓风
      你用 query_posts 自定义的话要注意给函数的‘paged’这个参数赋值,参考如下:
      把下面的 $page 赋值给 paged 参数
      $page = (get_query_var('paged')) ? get_query_var('paged') : 1;

    2. 晓风 says:

      @zwwooooo

      咳咳,没效果,不起作用~~邮件已发,兄弟看看吧

  16. [...] 如果要显示当前页及总页数, 将标注那行最前面两斜线删除即可。 如果要显示 ‘上一页’ 及 ‘下一页’, 请参考《ZWWoOoOo 的修改版》。 [...]

  17. 海棠果 says:

    我搞不定啊

    1. zwwooooo says:

      @海棠果
      慢慢折腾,应该不是很难

  18. 抛弃wp-pagenavi插件,手动增加页面导航 - Missuw says:

    [...] 在各大高手那看到的,还不错,参考自:zww的为 Mini Pagenavi 添加“上一页”、“下一页”链接 [...]

  19. 泰溪 says:

    搞定了!
    代码收走了,

    1. zwwooooo says:

      @泰溪
      慢慢折腾

  20. [...] 3.替代wp-pagenavi的mini pagenavi 这个完全归功于willin大师和zww先生的教程。不如我笨的童鞋们一试便会,就不多说了。 4.spam小墙 [...]

发表评论

昵称 *

网址

B em del U Link Code Quote