不用插件自制 WordPress 倒序留言簿

这篇文章是我修改 留言页面 的一个总结分享,可以生成一个倒序显示的留言簿,而且输入框在评论列表上方。概要如下:建立 一个页面模板和一个评论模板,让前者 指定 后者,修改 评论模板里面的数据读取方式,如果有评论编号的话也要 倒序 一下,最后 调整 一下布局让评论输入框位于评论列表的上方。

建立一个独立的页面模板

通常文章的评论是顺序显示的,所以我们需要另建立一个倒序页面模板给留言簿。当然如果有遏制沙发党的需要也可以全站用这个方法 :evil: 把主题的根目录下的 single.php 或 page.php (须有评论功能) 复制重命名为 guestbook.php, 把 comments.php 复制重命名为 gbcomments.php, 名称可以自定。在 guestbook.php 的开头加入:

<?php /* Template Name: 留言簿 */ ?>

然后在它的末尾找到如下代码,另外指定一下评论调用:

<?php comments_template(); ?> //替换成:
<?php comments_template('/gbcomments.php'); ?>

新建留言簿页面

新建页面的时候选择页面模板 (Page Template) 为“留言簿”,这样它就具有了单独的页面和评论结构,供下面的步骤调试用。页面内容可以是留言簿说明。

修改 gbcomments.php 里面的评论顺序

也很简单,只需要在文件中替换一处代码:

<?php foreach ($comments as $comment) : ?>
//替换成:
<?php foreach (array_reverse($comments) as $comment) : ?>

如果有评论编号,也需要改

如果代码没写错的话,现在评论应该倒过来排了噢。但是还有个问题,不少模板的评论是带有编号的,编号还没有倒过来。有点程序基础的朋友不用想也知道,原始代码是定义了一个初始为 0 的变量 $iCommentCount (名字可能不同), 自增一次输出一次,循环就好了:

$iCommentCount = 0;
//...
<?php $iCommentCount++; echo($iCommentCount); ?>

需要改成初始值为评论总数,输出一次自减一次,循环:

$iCommentCount = get_comments_number();
//...
<?php echo($iCommentCount); $iCommentCount--; ?>

把评论输入框搬到评论列表的上方

好了,到这里基本上就改完了,最后这个步骤要看具体模板结构,看着改改就好,出错了大不了重来,而且调试的部分是独立的,不会影响到正常访问。

这样一个留言簿就做好了,比我以前用的 cbox 那可是好太多了 :P 而且最新留言也会出现在普通文章的评论一起,头像什么的更是不在话下。这个功能如果有插件能实现,估计也没有自己改好吧,主题关联度太大了。

最新评论

  • qmdvd 在网络上混,很难不露出马脚啊 防范垃圾邮件,您需要知道这些
  • 老耿 其实很多国产的阅读器也很好用的,比如鲜果,有道,我觉得都不错,Google的有时候反而反应有点慢。 Google Reader 的分享和效率
  • Leo.N 前来取经了。。。。 :D 全新的评论区体验
  • V2 软件不错,没有s60v2版本显得相当霸道。 谷歌手机地图中国版 2.x 发布,支持基站定位、GPS、行车路线、公交查询
  • 丘丘 测试感受。 全新的评论区体验

本月嘉宾


发表您的评论

您的评论将回复给 原评论者

:D:):O8):(8D;DXD:P:nice::rainbow::cafe::love::cake:

目前有 52 条评论

  

Guestbook Generator插件也可以实现这个功能,当然是比较“傻瓜式”的,不如自己修改来的更好。

我怎么都找不到foreach那一句

肥嫂一出手,就知道有没有。
我找了好久的方法,自己做过几次就是不完美,现在总算好了,多谢分享。


fisio 回复: XD

这个,抄我去年的冷饭啊,卡卡 :p


fisio 回复: 的确啊……我竟然还re过-_- 原谅一下刚有独立wp玩的我吧 :P

:D 一楼的插件我记下了,嘿嘿

请问2.5的后台目前新建页面没有选择模板这一选项应该怎么办啊???


fisio 回复: 有啊,在最下面呢

呵呵,我就记得以前看过。
今天要用的时候google了一下,果然找到这里了。

:) 其实类似的内容央街浪子一年多前就写过了,而且跟我步骤都差不多,哈哈

kaseuw fniyb zjho

好东西,收藏!

好好好

还是有点问题

评论后自动跳转到首页,怎么解决?

那应该不是本文提到的修改改出的问题,仔细对比一下修改后的,和原来的,如果找不出毛病,email 给我看看 :D

哦,我觉得是 gbcomments.php post 到wp-comment-post 然后 wp-comment-post 认为是comments.php post 过来的,就把结果返回给comments.php而没找到gbcomments所以这样

那么,可以成功评论吗?

能成功评论,已发邮件。

我跟你情况一样,但是我把页面自定义链接(留言改成guestbook)后就不会转到首页了,不知道是不是对中文的支持问题?应该不会吧 呵呵。
但是我的倒序功能始终没成功,郁闷

best search engine google

谢谢你总结 抱走了~
经过我的应用
也要因地制宜
譬如有的巢型留言板
他的那条语句是

总之原理是一样的,都是修改这个函数
因地制宜 :)

谢谢你~

呵呵,不客气,评论里面的 php 代码被过滤掉了,解决了就好 :)

绕来绕去原来你就是挂在berrytimes里的老肥啊~
幸会幸会~
同为BB控
看来用wp的形成圈子了~

哈哈,握手握手,哪天要是在街上看到一个穿wpT恤手拿bb的家伙说不定就是我了 :D

非常感谢,搞定了

其实用插件,还是修改代码方法好,哪个速度快?
http://www.01668.net.cn/cirrhosis/ :rainbow:

留言本里的留言,会出现在最新评论里,总觉得这样不好,有什么办法解决吗?

原生的最新评论 widget 不知道,类似插件倒是很容易排除某个文章,需要自己动手修改 :P

这个不错,学习了

是的= =我这个主题里也没有foreach一句= =..类似的都没有

是不是用了 2.7 才支持的那个 wp_list_comments, 一句输出所有评论?

那 用了 这个 wp_list_comments 的 那有没有可能按照你的修改步骤来进行修改实现呢。
貌似结构上有所不同 所以还请回复。 谢谢……

我没有研究过 wp_list_comments, 这个函数的特点就是一句搞定,但是提供超多的 class 可供样式化。搜一下这个函数名找些资料看看吧…

谢谢,我终于搞定这个留言本了

这样也可以啊。学习学习。谢谢!

值得学习!

呵呵谢谢~我按你的方法已经做出来了呵呵
http://www.lidiy.com/guestbook

en.除了那个评论的代码不一样,其他都是按你的说的改的。你只能用两个字来形容哦,能人啊。。 :nice:

刚巧用上,哈哈,谢谢分享

我使用的是一个国外主题,按照文中所示无法实现倒叙哦,这样应该怎样修改呢

- -,估计被认为是垃圾评论了
去掉所有贴出来看下行不行
div id="comments_wrap"
ol class="commentlist"
?php wp_list_comments('avatar_size=48&callback=custom_comment'); ?
/ol
div class="navigation"
div class="fl"></div
/div

倒不是垃圾评论,是因为大部分 标签被过滤掉了,不能插入代码哦,要贴只能用转义符,中间不空格的 &l t; = <, &g t; = >

铁通打开都这么快,难道是三线?O(∩_∩)O哈哈~

我这是美国主机啊。。

2010nian le ,hai keyi yong me ?

学习了,顶一下,谢谢。

很好,学习了,顺便给博主拜年了

嗯,试一下!


有 6 篇其他博客的文章引用了本文

  1. 08年5月30日不用插件自制 WordPress 倒序留言簿 at 陈.XP
  2. 08年6月11日Keo博客 » Blog Archive » 优化建议——给Wordpress Thread Comment的建议
  3. 08年9月26日Only Seven» Blog Archive » guestbook
  4. 08年11月28日Wordpress 修改手记 : : 用心看世界
  5. 09年7月3日玩软部落 » 无需插件创建 WordPress 倒序留言簿
  6. 09年10月14日有关WordPress自制留言板评论顺序的问题 @ 一地毳毛