In: PHP
31 Jan 2010前一阵给TTT弄了个博客:http://ttt.jennal.cn/
TTT周五有个要求,她要博客的首页可以看到评论,不要点进去才能看到,那样太麻烦。
在网上找了很多资料,没有找到单独对这个进行介绍的。所以只好找了其他很多资料,加上不断的尝试,昨晚做到快4点,为了防止这次伟大的事件在我的记忆中被删除,还是写下来纪录一下。
要在首页显示评论,我们需要修改四个文件(可能你的文件命名会有些不同,没有关系)。
这些文件都位于wp-content/themes/我的主题目录下
index.php : 首页模板
homepage_comments.php : 评论模板
functions.php : 放回调函数,当然你也可以写在homepage_comments.php里面
comments.css : 放评论的css,当然你也可以写在homepage_comments.php里面
index.php很简单,在你要放评论的地方加上如下代码,当然要放在日志的循环里面:
1
<?php $withcomments=1; comments_template(’/homepage_comments.php’); ?>
$withcomments 是一定要设置的,首页默认为0
至于comments_template这个函数,它会帮你comments先取出来,供你的模板使用。如果有看文档的话,应该知道有一个wp_list_comments函数,这个函数的参数没有接受postId,它是不做数据库查询工作的,具体它是怎么工作的,我也没有深究,只是用到它的回调功能来自定义我们的comments列表,这个在下面会提到。
下面我们来看一下homepage_comments.php怎么写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ul class="homepage_comments">
<?php
wp_list_comments(array(
‘walker’ => null,
‘max_depth’ => ”,
’style’ => ”,
‘callback’ => ‘homepage_comments’,
‘end-callback’ => null,
‘type’ => ‘all’,
‘page’ => ”,
‘per_page’ => ‘3′,
‘avatar_size’ => 32,
‘reverse_top_level’ => true,
‘reverse_children’ => ”));
?>
</ul>
本来以为直接在comments模板里面写结构和样式就可以了。但是发现不行,除非直接去取$wp_query->comments,但是这样不好,最好还是调用它的API,不然以后版本升级可能要出问题。
这里我把wp_list_comments的全部参数都列出来了,其实没有必要,只要设置你想要的参数就可以了。
这里要补充一下需求,我不希望把所有的评论都列出来,我只要列出最新的3条,而且要倒序,就是最新评论的在最上面。所以我把per_page设置成3,reverse_top_level设置成true。但是这样有个问题,显示的时候是显示最后一页,可能你有4条评论,那它只会显示第4条。在不改变和添加新API的情况下,我没想出解决的办法。如果在看这篇文章的你知道怎么解决,请告诉我。顺便说一下,type如果设置成别的可能会出问题。我之前就学别的模板,把它设置成comments,结果每个post的comment全变成一样了。然后设会all就好了,这个问题也不去深究,有兴趣的自己看源码/wp-includes/comment-template.php。
重点来了,重点是’callback’ => ‘homepage_comments’这个参数。顾名思义,这是设置回调函数,那homepage_comments就是函数名。为了代码的整洁和统一,我把这个函数放在functions.php里了。那在循环遍历comments的时候,就会调用这个函数。
下面来看functions.php这个文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
function homepage_comments($comment, $args, $depth){
$GLOBALS[’comment’] = $comment;
global $commentcount;
if(!$commentcount) {
$commentcount = 0;
}?>
<li><div class="comment_header">
<?php if (function_exists(’get_avatar’) [...]
In: 没用的话
18 Jul 2009貌似wordpress.com也被天朝给封了,为了开放评论,不得不开启Akismet(一个自动评判垃圾评论的插件,非常牛逼,还可以自动学习),可是Akismet需要wordpress官方的API-Key,只能找代理去注册了。我嫌麻烦,只用网页代理,可是很多网页代理不支持表单,所以没法注册。还好我运气好,找到了两个。
这里只是记录一下,不是帮他们宣传哦。
这个支持表单,还不错的代理,就是广告有点那啥,我是用它注册的
http://proxy.daili.name/
可是wordpress要登录还得用https,上面这个代理没法胜任,只好继续找,找到一个国外的,还不错,用它登录上了,估计注册也没问题
http://www.online-browser.com/
姓名:郑玏
性别:男
职业:IT工程师
爱好:KTV、乒乓球、台球、五子棋、围棋、编程
语言:中文、英语、闽南语
Email: