5 30

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

分类:WordPress | 185 次浏览 | 给我留言 |

转载fisio的“不用插件自制 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 那可是好太多了 而且最新留言也会出现在普通文章的评论一起,头像什么的更是不在话下。这个功能如果有插件能实现,估计也没有自己改好吧,主题关联度太大了。

关闭“图像分享”版块 还是放弃网络电视吧
  • 标签 :  , , ,
  • 原文链接 : http://chenxp.com/p71
  • 转载原创文章请注明 : 陈.XP
  • 收藏到 : Google书签 新浪ViVi 365Key网摘 天极网摘 我摘 POCO网摘 博采网摘 YouNote网摘 和讯网摘 博拉网 igooi网摘 I2Key网摘 天下图摘 百特门网摘 Del.icio.us Yahoo书签 奇贴 QQ娱乐摘 添加到Digg! 添加到Facebook!
  • 1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars (1 人投票, 平均: 9分,
    Loading ... Loading ...
  • 3 条评论

    • At 2008.05.30 21:40, admin CHINA said:

      到处找留言板插件
      结果还不如照这个自己做个

      呵呵

      • At 2008.05.31 11:44, Alex Chen CHINA said:

        OpenID留言测试
        呵呵

        • At 2008.05.31 11:46, admin CHINA said:

          好玩,这样就不用注册,也不用每次填邮箱、用户名、网址了
          只要在OpenID处填上域名chenxp.com
          一切搞定
          哈哈

          (Required)
          (Required, will not be published)