这篇文章是 fisio 修改 留言页面 的一个总结分享, 可以生成一个倒序显示的留言簿, 而且输入框在评论列表上方. 概要如下: 建立 一个页面模板和一个评论模板, 让前者 指定 后者, 修改 评论模板里面的数据读取方式, 如果有评论编号的话也要 倒序 一下, 最后 调整 一下布局让评论输入框位于评论列表的上方.
建立一个独立的页面模板
通常文章的评论是顺序显示的, 所以我们需要另建立一个倒序页面模板给留言簿. 当然如果有遏制沙发党的需要也可以全站用这个方法, 把主题的根目录下的 single.php 或 page.php (须有评论功能) 复制重命名为 guestbook.php, 把 comments.php 复制重命名为 gbcomments.php, 名称可以自定. 在 guestbook.php 的开头加入:
1 |
<?php /* Template Name: 留言簿 */ ?> |
然后在它的末尾找到如下代码,另外指定一下评论调用:
1 2 |
<?php comments_template(); ?> //替换成: <?php comments_template('/gbcomments.php'); ?> |
新建留言簿页面
新建页面的时候选择页面模板 (Page Template) 为“留言簿”, 这样它就具有了单独的页面和评论结构, 供下面的步骤调试用. 页面内容可以是留言簿说明.
修改 gbcomments.php 里面的评论顺序
也很简单, 只需要在文件中替换一处代码:
1 2 3 |
<?php foreach ($comments as $comment) : ?> //替换成: <?php foreach (array_reverse($comments) as $comment) : ?> |
如果有评论编号, 也需要改
如果代码没写错的话, 现在评论应该倒过来排了噢. 但是还有个问题, 不少模板的评论是带有编号的, 编号还没有倒过来. 有点程序基础的朋友不用想也知道, 原始代码是定义了一个初始为 0 的变量 $iCommentCount (名字可能不同), 自增一次输出一次, 循环就好了:
1 2 3 |
$iCommentCount = 0; //... <?php $iCommentCount++; echo($iCommentCount); ?> |
需要改成初始值为评论总数, 输出一次自减一次, 循环:
1 2 3 |
$iCommentCount = get_comments_number(); //... <?php echo($iCommentCount); $iCommentCount--; ?> |
把评论输入框搬到评论列表的上方
好了, 到这里基本上就改完了, 最后这个步骤要看具体模板结构, 看着改改就好, 出错了大不了重来, 而且调试的部分是独立的, 不会影响到正常访问.
这样一个留言簿就做好了, 最新留言也会出现在普通文章的评论一起, 头像什么的更是不在话下. 这个功能如果有插件能实现, 估计也没有自己改好吧, 主题关联度太大了.
comments_template 模板函数
不知道大家有没有想过为什么独立文章页 single.php 可以留言, 而页面页 page.php 不能留言呢? 差别就是下面这段独立文章页 single.php 里有, 但页面页 page.php 没有的代码:
1 |
<?php comments_template(); ?> |
这其实是调用主题的留言模板 comments_template. 我们将其添加到页面页 page.php 相应的位置, 即可增加页面页 page.php 的留言功能. 步骤如下:
找到
1 |
<div class="entry"> |
后面第一个
1 |
</div> |
标签, 将上述调用留言模板的代码复制到它下面并保存. End…