主题技巧: WordPress 2.7 的评论分页

Nov 10th, 2008 Add Comment

WordPress 2.7 将为我们带来强大的评论功能, 其中包括评论分页. 也就是说, 从此你可以体验原生的评论页面调度了.

comment pages

方法说明

首先来看看可能被用到的方法. 打开文件 wp-includes/link-template.php 你会发现 WordPress 2.7 多了 4 个针对评论分页的方法:

get_comments_pagenum_link
$pagenum: 页码
$max_page: 最大页数
返回链接地址. 在本次应用中不会被用到, 但大家应该知道有这个方法, 将方便你制作插件.

next_comments_link
$label: 显示的字样, 默认是 » Newer Comments. 但我一直认为这是 bug, 应该是 Newer Comments » 吧?
$max_page: 最大页数
显示跳转到下一页的链接.

previous_comments_link
$label: 显示的字样, 默认是 « Older Comments.
显示跳转到上一页的链接.

paginate_comments_links
$args: 字符串参数组
- base: 页面 URL
- format: 我也不知道是什么. 谁能告诉我?
- total: 最大页数
- current: 当前页码
- echo: 是否显示, 默认为显示. 不显示时返回字符串 HTML.
- add_fragment: hash, 默认是 #comments. 为求统一, 方便理解, 也免得修改, 建议制作主题时 评论部分用 id="comments"
显示评论分页或返回评论分页的 HTML.

实例说明

1. 上一页和下一页
这是最简单, 也是最常被提到的, 效果与文章分页没什么两样.

<div id="commentnavi">
	<span class="floatleft"><?php previous_comments_link(__('&laquo; Older Comments')) ?></span>
	<span class="floatright"><?php next_comments_link(__('Newer Comments &raquo;')) ?></span>
	<div class="fixed"></div>
</div>

2. 导航式分页
对访客最透明, 使用起来最方便的, 效果与使用 WP-PageNavi 分页的效果相仿.

<div id="commentnavi">
	<?php paginate_comments_links(); ?>
</div>

看看前面的两个例子, 好像我们要的功能都可以实现了. 但是你觉不觉得有点怪怪的? 如果后台中选择不显示评论分页, 或者评论数不够分页, 也要显示 id="commentnavi" 的外框吗? 不! 我们要改改这个程序.
可以通过调用方法 get_option('page_comments') 来获取后台的评论分页选项.
我们还可以调用方法 paginate_comments_links('echo=0') 来知道评论是否足够并需要进行分页处理.

3. 上一页和下一页 (改进)

<?php
	// 如果用户在后台选择要显示评论分页
	if (get_option('page_comments')) {
		// 获取评论分页的 HTML
		$comment_pages = paginate_comments_links('echo=0');
		// 如果评论分页的 HTML 不为空, 显示上一页和下一页的链接
		if ($comment_pages) {
?>
	<div id="commentnavi">
		<span class="floatleft"><?php previous_comments_link(__('&laquo; Older Comments')) ?></span>
		<span class="floatright"><?php next_comments_link(__('Newer Comments &raquo;')) ?></span>
		<div class="fixed"></div>
	</div>
<?php
		}
	}
?>

4. 导航式分页 (改进)

<?php
	// 如果用户在后台选择要显示评论分页
	if (get_option('page_comments')) {
		// 获取评论分页的 HTML
		$comment_pages = paginate_comments_links('echo=0');
		// 如果评论分页的 HTML 不为空, 显示导航式分页
		if ($comment_pages) {
?>
	<div id="commentnavi">
		<?php echo $comment_pages; ?>
	</div>
<?php
		}
	}
?>

对于最新的评论分页功能, 我有点自己的看法, 也随便说一下吧.
评论分页并不完美. 如果外面某个链接转跳到 http://******/#5630, 但是编号为 5630 的评论并不在第一页, 那么就无法定位到这条评论上面, 转跳过来的兄弟的感觉会比较不爽.
另外, WordPress 的评论分页不是 AJAX 应用 (为浏览器的兼容性考虑, 以后也不太可能是), 所以翻页会相当耗时. 所以我建议, 就算要分页, 也要将每页显示的评论数设大一点. 30? 50? 100? 因博而异.

好了, 大概你已经知道该怎么使用了? CSS 就不多说了, 各有所好嘛, 这个不好说.

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 主题技巧: WordPress 2.7 的评论分页

  1. http://0.gravatar.com/avatar/89caf9e5fdc6ad1a19d81fd24e6fce88?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    毒,大师,德味,学习了,拿分走人!

  2. http://0.gravatar.com/avatar/8325d7a4ed37945d9dec694b2691d3fe?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    不是很明白呀,还是多看一下你的其它文章好了。

  3. http://1.gravatar.com/avatar/3c4cc2232a4e7d6a1150239669ccc2e1?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    几点总结的很好。。学习专业和总结的精神

  4. http://0.gravatar.com/avatar/a9cdc986dcbc59e62eef0a5c9b9343e8?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    不懂那里插入分页

  5. http://1.gravatar.com/avatar/54381ec8b096c959db4166b5b5f2db4a?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    学习了 用上了 还有跟楼上的一个问题 在哪里修改每页显示评论数目

  6. http://1.gravatar.com/avatar/3b282c8cc6753f8e66422b17e2b694f0?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    额 在哪里修改每页显示评论数目啊

  7. http://1.gravatar.com/avatar/11c106aa2b44bb82bc316048b996ecd2?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    弄不懂在哪里修改

  8. http://0.gravatar.com/avatar/eafff4918fffe6108e0f1ce887ee42e6?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    学习了一番~谢谢分享~

  9. http://1.gravatar.com/avatar/fca86c2ef50e6ccdfbaa159798b29858?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我很郁闷。。。还是找插件实现吧。。

  10. http://1.gravatar.com/avatar/129ee0ffa102970fb7b291d539b71255?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    好像这插件用了之后评论分页都显示最后一页.怎么样才能实现显示第一页呢?

  11. http://0.gravatar.com/avatar/21de70e3d6ce553a9a6ef2439afecc8c?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    Looks very interesting. Thanks for sharing..
    http://fashionshow99.spaces.live.com

  12. http://1.gravatar.com/avatar/d88d51bff01156274357b8af7faf7eb1?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    "对于最新的评论分页功能, 我有点自己的看法, 也随便说一下吧.
    评论分页并不完美. 如果外面某个链接转跳到 http://******/#5630, 但是编号为 5630 的评论并不在第一页, 那么就无法定位到这条评论上面, 转跳过来的兄弟的感觉会比较不爽."
    老大这个怎么改进??

  13. http://1.gravatar.com/avatar/3a034a856c507e677af3884903cdde12?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    假如留言包含样式

  14. http://1.gravatar.com/avatar/7b2da3c81eb998e93726c4bbf924cc70?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我也是似懂非懂

  15. http://1.gravatar.com/avatar/1ec4717231e96f16618449f9ebb32c5c?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我的评论也达不到分布的资格

  16. http://1.gravatar.com/avatar/fc99fc882d221b2c0a2f0442a1d190ab?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    Hello, Mg12 again,

    It looks like that I have figured out the problem using two widgets.

    One request to make your theme even better, is that to a tag on the post says "Share the post" so an email address box will show up and you can share the post with friends.

    Thanks

  17. http://1.gravatar.com/avatar/fc99fc882d221b2c0a2f0442a1d190ab?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    Hello, MG12
    I love your theme. I am useing it for a new project that I am working on.I altered it a lot base on your beautiful theme.
    I have a few problems. I wonder if you can help.

    The big issue is that the author.php page that I am creating having hard time pull the gravatar using author ID.

    Can you help?http://blog.onesuite.com/?author=9

    Thanks a lot.

  18. http://0.gravatar.com/avatar/8fb0e0aaf85c1e6ba2e511e0b355a97f?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    安装好了,使用正常

  19. http://0.gravatar.com/avatar/e8f87528ed0a0eaba60009f8580df401?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    这个太有用了。。。恩。。。V8里学习这部分

  20. http://1.gravatar.com/avatar/d91ef9bc723792abefc5f334ed489efc?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  21. http://1.gravatar.com/avatar/7060dfb9a4706f749898fb7b915aa5da?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  22. http://1.gravatar.com/avatar/5a35750c9a1473a16db876e756580790?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    想着要改主题就烦,还不如不升级到2.7好了。

  23. http://1.gravatar.com/avatar/bd8b4ca2840328e36d7f618be29988c1?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    这个功能期待很久了。以前看评论啦的长长的头都大。估计没多久ajax版的评论翻页功能插件也会有人开发了

  24. http://1.gravatar.com/avatar/917ccf140d8e8a321bd1c2d52ef8b549?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    看来WordPress 2.7出来后该换个新主题了,需要支持很多新特性,自己改又不会

  25. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @Charles
    我启动了 permalink.

    @sleaven
    这东西就是用多了就懂了.

  26. http://0.gravatar.com/avatar/02be6d61c691ceb412fc5f7c866d75ca?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    虽然不是很理解,不过我也一直在努力学~ :grin:

  27. http://0.gravatar.com/avatar/c255305c58850a6212b9ea14e8351d13?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @mg12
    你那个demo没有启用permalink。你试下启用permalink。我的问题已经解决了,我自己设定了base参数就ok了。

  28. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    其实这个很好用的, 如果留言数量很多, 可以加快页面的装载速度.

    @Yacca
    哈哈~ 就没有完美过.

    @Patrick
    @hiswing
    我是用 WP23 Related Posts 插件改出来的 (就是加个功能而已). 大家都去呼吁水煮鱼同志加上这个功能吧.

    @Charles
    应该不会吧, 我在 Blocks 中使用正常, 你可以到这里看看效果:
    http://demo.neoease.com/index.php?wptheme=Blocks

  29. http://0.gravatar.com/avatar/c255305c58850a6212b9ea14e8351d13?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我刚试了一下paginate_comments_links()这个函数,使用默认参数的话,会有bug。还在进一步摸索中。

  30. http://1.gravatar.com/avatar/bc0c69a6bf72455c4abb653a1d70747a?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    功能越来越强大,真好 :arrow:

  31. http://0.gravatar.com/avatar/c0c7b7adb7a432f2f39a3099f186b830?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    无意中来到这里,发现我又发现一个优秀的WordPress Blogger,加入收藏了!!以后常来关注

  32. http://0.gravatar.com/avatar/6a7fb06ff9b47454a5f76f5d54e52465?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    请问,如何才能象你一样,Related Posts中显示摘要呢?

  33. http://1.gravatar.com/avatar/5b5274fe979864736dc6cf59036eed3c?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    呵呵 的确只能看看而已。。评论还达不到翻页的标准啊~ :shock:

  34. http://1.gravatar.com/avatar/76989d7ef1a2ebca1ff228a924b497a5?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    暂时用不上,我的留言不多 :razz: 不过很好的一篇技术文章,又学到新东西了!
    不过我最想知道的就是你的“相关日志”是如何让它输出一部分摘要的,这个功能很不错的,早就想问问了 :lol: 能不能告诉一下? :smile:

  35. http://1.gravatar.com/avatar/7c82d84d9eee60093bda5a2d361010ac?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    要是能针对某页面分页就好了。
    我留言板就是用页面做的,只想让这个页面分页,评论太多了。日志页还是有多少显示多少就可以。 :arrow:

  36. http://0.gravatar.com/avatar/c1834913e0459af48c2bcb63a641b223?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我的评论也达不到分布的资格 :mad:

  37. http://0.gravatar.com/avatar/401b6aa08d03f959bc41a4f33e4fea6c?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我需要评论分页...泪流流 怎么可以不完美-.- :cry:

  38. http://0.gravatar.com/avatar/c4e6643ae2a4a07665ae1723450e5e60?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    评论不多暂时用不着分页
    wordpress是不是也有类似于api文档的东西?

  39. http://0.gravatar.com/avatar/2cef4fcc72521c64304ce99f94bc29c5?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    之前裝了一個評論分頁的插件,但是樓層計數和評論書簽就有問題。
    不知道2.7的評論分頁能否克服這些問題

  40. http://0.gravatar.com/avatar/c419cb20777cc932e6edbc4aecf3400d?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    忧伤啊,现在在考虑一下问题?mg12老兄以后主题更新的时候可以不可以说明下更新的地方啊,我们都对主题进行了一些个性化的修改,如果升级的话那些更改不要重新再来了?可以考虑下吧!! :neutral:

  41. http://0.gravatar.com/avatar/cab963ed5a8f34ea97a0769184715808?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    恩,不错不错,不过我还没到需要评论分页的程度,等到需要再自己改改~不过你就得用用了~ :cool:

  42. http://0.gravatar.com/avatar/65004a241aac4d31a8d67975b3df428b?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    应该是 似懂非懂 我是文盲 :smile:
    仔细看过一遍.

  43. http://0.gravatar.com/avatar/65004a241aac4d31a8d67975b3df428b?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    沙发? :twisted:
    是懂非懂,呼呼

  1. Loading...