这两天老是有小白,一些想通过不正当的 SEO 来获取自己 PR 的小白,看准了我的博客和网站的侧边栏最新评论用的是 Widget (就是 WordPress 默认的,至于为什么这么用,是因为可以用上缓存插件而已),就跑来留言,说的也没啥,无非是支持,顶之类的,然后,留下自己的垃圾站的网址就跑了,对于这种人渣,人肉 Spam,我是最讨厌的。
在 WordPress 的文章和页面中,评论者的链接默认是 no follow 的,所以对自己的 PR 毫无用处,而 Widget 调用的最新评论,确实没有 no follow ,这样就让一些投机的人钻了空子,不停评论,除了直接 spam 以外,能否通过自己修改文件来达到目的呢?答案是肯定的。
用非记事本打开 wp-includes\widgets.php ( WordPress 2.8 以前版本,WordPress 2.8 的话是wp-includes\default-widgets.php)文件,搜索 get_comment_author_link() ,如果以前没修改过,应该只有一个,然后把 get_comment_author_link() 修改为 get_comment_author() ,然后刷新或者删除缓存,再看看首页,没有评论者的链接了吧,哎,对付人肉 Spam ,只能用这招,假如没人会可以为了 PR 而留言,我是很乐意把所有朋友的留言都直接放到首页,而且给你一个链接,呵呵。
话说,通过观察 wp-includes\widgets.php 文件,你会发现很多有趣的侧边栏东东,比如这个最新评论的重要部分代码是:
<?php
}/**
* Display recent comments widget.
*
* @since 2.2.0
*
* @param array $args Widget arguments.
*/
function wp_widget_recent_comments($args) {
global $wpdb, $comments, $comment;
extract($args, EXTR_SKIP);
$options = get_option('widget_recent_comments');
$title = empty($options['title']) ? __('Recent Comments') : apply_filters('widget_title', $options['title']);
if ( !$number = (int) $options['number'] )
$number = 5;
else if ( $number < 1 )
$number = 1;
else if ( $number > 15 )
$number = 15;if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
wp_cache_add( 'recent_comments', $comments, 'widget' );
}
?><?php echo $before_widget; ?>
<?php echo $before_title . $title . $after_title; ?>
<ul id="recentcomments"><?php
if ( $comments ) : foreach ( (array) $comments as $comment) :
echo '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_comment_author_link(), '<a href="' . clean_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
endforeach; endif;?></ul>
<?php echo $after_widget; ?>
怎么样?不喜欢用 widget 的同学可以发挥自己的聪明才智,导入到主题的 siderbar.php 里,那就可以实现不依靠任何插件或者 widget 就能显示最新评论了。
不过我还是推荐使用 widget ,因为可以配合 WP Widget Cache 插件来缓存,嗯,适合小流量的博客。
WordPress 博大精深,值得我们每个人去学习
PS:正在考虑是否要去除自己的评论,但是,我每次都是通过首页来看最新的评论然后去回复一个,这样就懒得进后台了,再三考虑,还是不要去除的好。
再次PS:目前不会加入评论回复邮件功能,一方面是正在用的 vps 的 sendmail 有点问题,貌似发送的邮件到达不了,所以我就没装 sendmail ,二是每天N多个邮件看着不爽(我为访客考虑嘛)
相关信息
本文短网址:http://zi.mu/raf , 如果你觉得本文很可爱,请使用 Twitter 来分享本文:Tweet This
- 收藏+分享: Delicious / Live Favorites / Google书签 / 百度搜藏 / QQ书签 / 饭否 / 豆瓣 / Twitter


已有42条评论
LAONB
发表于2009年06月8日16:31
那我也来沙发,这个写的不错,不过我哪里都是些常来的朋友。
[回复]
Showfom
回复:
June 8th, 2009 at 16:37
@LAONB, 林子大了就会有各种各样的鸟出现 哈哈
[回复]
一天一歌
回复:
June 8th, 2009 at 20:27
@Showfom,

看来宁可错杀一千绝不放过一个是你的原则哦
P.S.:“网站 (设置头像)”
人头是捆着邮箱的不是网站阿哈
[回复]
石老人
发表于2009年06月8日17:18
我用的是一个插件,可以自己调整一下,也没有链接了。呵呵。这个插件中文 WordPress 工具箱
[回复]
Showfom
回复:
June 8th, 2009 at 17:22
@石老人, 用插件的话,就得用全站缓存或者自己去弄 sidebar 的缓存了,因为我喜欢用 WP Widget Cache 插件,所以呵呵
[回复]
Panther
发表于2009年06月8日18:10
MJJ
[回复]
Sivan
发表于2009年06月8日19:30
[回复]
Sivan
发表于2009年06月8日19:33
还有你给的那个代码,自己在里面加上rel="nofollow"就行了啊,换了那个变量连评论者链接都不显示了啊。
[回复]
Showfom
回复:
June 8th, 2009 at 19:59
@Sivan, 加了 nofollow 和 不显示 两个概念也……
[回复]
流星
回复:
June 9th, 2009 at 13:19
@Sivan, 加到哪里呢?加到link后面那个括号里面?
[回复]
Showfom
回复:
June 9th, 2009 at 16:08
@流星, 给你举个例子:
[回复]
流星
回复:
June 9th, 2009 at 16:50
@Showfom, 不会是每一个都要手动去加吧?
[回复]
流星
回复:
June 9th, 2009 at 17:28
@流星, 才发现我有wp kit cn,怪不得没效果,原来我用的是kit cn生成的widget,不是系统的……丢人了……
[回复]
kramon
发表于2009年06月8日19:51
不错!
[回复]
wulinfo
发表于2009年06月8日21:08
就因为来你这评论多了,结果PR变0看
[回复]
Showfom
回复:
June 8th, 2009 at 21:35
@wulinfo,
传说中的人品问题?
[回复]
卢松松
发表于2009年06月8日23:28
不显示连接可不太好o
[回复]
Showfom
回复:
June 9th, 2009 at 10:41
@卢松松, 评论里还是显示的,侧边栏不显示而已。
[回复]
leehow
发表于2009年06月9日08:09
我真的是来看看你这边的...
[回复]
Showfom
回复:
June 9th, 2009 at 10:41
@leehow, 姐姐真好
[回复]
seri
发表于2009年06月9日14:26
[回复]
LOKE
发表于2009年06月9日17:33
我的连侧栏都没有了~~
[回复]
月夜
发表于2009年06月9日19:36
我个人最近正在思虑着将评论关闭。因为很多时候评论没有什么意义。不知道你作何感想。
[回复]
Showfom
回复:
June 9th, 2009 at 20:47
@月夜, 刚写感想呢:
发泄了一下下,其实博客最重要的还是朋友们的留言,对于访问量我是不太在乎了,否则只在乎访问量的话,一定会放些阿里妈妈、Google Adsense 的广告,在我眼里,博客只是一个交友的平台,一个展示自己,认识更多朋友的平台,所以,在我没想过用博客盈利的情况下,我是永远都不会去放广告、写软文的。
呵呵,偶只在乎留言评论 呵呵。
[回复]
生日礼物 DIY
发表于2009年06月10日06:37
呵呵 很不错
[回复]
feicun
发表于2009年06月10日14:48
要是我那里出现垃圾留言的人,就直接删除……管他的。话说我觉得ls就是垃圾留言
[回复]
Showfom
回复:
June 10th, 2009 at 15:05
@feicun, 我也这么觉得,反正留言的链接是 no follow 的,随他去了。主要是删除得进后台,我很懒的哎……平均两天进入一次后台,发文章都直接用wlw
[回复]
shamas
发表于2009年06月10日15:50
我用的那个recentcomments也没有留言者链接,比较省事
[回复]
Showfom
回复:
June 10th, 2009 at 16:11
@shamas, (*^__^*) 嘻嘻…… 偶不喜欢用插件~~
[回复]
辐射鱼
发表于2009年06月10日17:10
偶来你的博客就是来点击别人的博客的,谁叫你这里是wp博客大全呢
[回复]
Showfom
回复:
June 10th, 2009 at 17:25
@辐射鱼, 也是噢。 不是 WordPress 的博客不做链接的,基本也不留言
[回复]
bolo
发表于2009年06月10日17:57
嗯,值得参考
[回复]
一米
发表于2009年06月11日13:20
写的不错,又学了点东西。嘿嘿。纯技术文章,要支持。
[回复]
Bronco
发表于2009年06月13日10:07
发现一个问题,貌似大家现在都喜欢不用Widget而直接写Sidebar的代码啊~
[回复]
Showfom
回复:
June 13th, 2009 at 10:56
@Bronco, 除非是纯HTML代码,要是php代码的话,会额外增加查询次数,所以偶不推荐了现在 哈哈 反正用widget也能实现的功能,为啥非要自己去写代码……
[回复]
rj03hou
发表于2009年06月13日11:08
我把wordpress升级了,没有找到你说的get_comment_author_link()
[回复]
Showfom
回复:
June 13th, 2009 at 15:18
@rj03hou, 换了名字,是 default-widgets.php
[回复]
rj03hou
回复:
June 14th, 2009 at 08:17
@Showfom,
谢谢,我已经修改成功了。
[回复]
可咔酷
发表于2009年10月16日13:02
学习了 已经用你的方法解决了同样的问题 谢谢
[回复]
陆洲
发表于2010年06月9日10:44
感觉还是不留自己的评论比较好,免得一下全显示自己的评论``
按个人所需吧`
[回复]
淘城记
发表于2010年07月26日15:21
不是有黑名单吗?把那些人拉进去就行了!
[回复]
Trackbacks