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

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

建立一个独立的页面模板

通常文章的评论是顺序显示的,所以我们需要另建立一个倒序页面模板给留言簿。当然如果有遏制沙发党的需要也可以全站用这个方法 👿 把主题的根目录下的 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 那可是好太多了 😛 而且最新留言也会出现在普通文章的评论一起,头像什么的更是不在话下。这个功能如果有插件能实现,估计也没有自己改好吧,主题关联度太大了。

最新评论

  • 衣皇后 对你爱爱爱不完,我可以天天月月年年看你博客到永远! 我为什么爱 Twitter
  • Kaylin Pra quem leva a sério esses argumentos desses links, é melhor nunca mais assistir um filme de Holywood. Todos sabem que Disney era conaorvsder para os padrões de lá. 人脸标签!体验 Picasa 网络相册新功能
  • Justice | | | | | inmidderen film izleme sitesi bedava filmler canlı film seyret binlerce filmler online sinema izletir beleÅŸ filmler filmini full izle ücretsiz sinema izleme sitesi filmini izle direk filmler son çıkan filmler vizyondan sonra full sinema izleme sitesi filmleri tam izle indirmeden bedava filim filmler full ve bedava 非常有创意的献血慈善广告
  • Mikel Congratulations on your spicy new name; and the expansion of your services.As a long time patron of ‘Chef Sazon’, I look forward to Roho Kitchen’s future success. Whether it is cooking classes, food and beverage pairing classes,event catering, or pop- up reratusants— I know that Roho Kitchen will always deliver an amazing culinary experience!. Semih Sayginer的开伦表演
  • Charlotte Gee willekirs, that's such a great post! 超牛的flash忍者游戏: N-Game

发表您的评论

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

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

目前有 63 条评论

  

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

我怎么都找不到foreach那一句

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


fisio 回复: XD

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


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

😀 一楼的插件我记下了,嘿嘿

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


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

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

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

kaseuw fniyb zjho

好东西,收藏!

好好好

还是有点问题

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

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

哦,我觉得是 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的家伙说不定就是我了 😀

非常感谢,搞定了

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

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

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

这个不错,学习了

是的= =我这个主题里也没有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 ?

学习了,顶一下,谢谢。

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

嗯,试一下!

您好,我按照您这篇文章中的方法修改了我的blog,其他部分一切正常,但是修改comments_template这一步的时候,修改完成后进入留言板页面会出现这样一句提示,PHP Error Message Warning: Division by zero in /home/a6197163/public_html/wp-content/themes/kanata/guestbook.php on line 33,我查看了一下,line 33就是comments_template这一句命令。您能帮我看看是什么原因吗?我想可能是我模板的comments比较特殊,如果您需要进一步信息的话,我可以用邮件发给您。

我想可能是这样的,wordpress 现在已经发生了一些变化,引用模板的时候在后台已经没有模板选择了,不过还是可以把通用页面的 php 复制一份通过命名来实现,比如 page-guestbook.php 自动作为 省略名为 guestbook 的页面的模板,不再需要写模板名。试试看这个办法吧?

由把评论输入框搬到评论列表的上方
好了,到这里基本上就改完了,最后这个步骤要看具体模板结构,看着改改就好,出错了大不了重来,而且调试的部分是独立的,不会影响到正常访问。搜索而来,但是在这里并没有找到方案。。。老大忘记写上了吧 :(

多谢博主,学到了!

看了博主的博客学到了很多,希望长更新啊,最近怎么不更新了?

博主写的太好了

右边的评论框自动下滑是怎么实现的?

JavaScript

哈哈,学到了

留言框好漂亮~~ :nice:

搞不懂WP的评论框为什么要放在评论下面,实在搞不懂


有 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自制留言板评论顺序的问题 @ 一地毳毛