路由人生 网站设计 无需插件创建 WordPress 倒序留言簿

无需插件创建 WordPress 倒序留言簿

这篇文章是 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…

本文来自网络,不代表路由人生立场,转载请注明出处。

作者: myweb

如何在网站上添加RSS订阅

发表评论

联系我们

联系我们

0898-0102021

在线咨询: QQ交谈

邮箱: yufe@yufe.me

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部