WordPress可以通过插件自动识别垃圾评论,比如官方的Akismet插件有强大的发垃圾评论,根据自有的数据库识别垃圾发布者,将垃圾评论放到垃圾站里。即使这样,还是不免遇到每天上百条垃圾评论蜂拥而至的情况,删到手疼。这时候,我们可以设置WordPress定时自动清空垃圾评论。
目录
自动清空垃圾评论
这段代码会让WordPress每天清空一次垃圾评论,放在主题的functions.php中即可
add_action('delete_spam_daily_event', 'delete_spam_daily'); function delete_spam_daily_activation() { if ( !wp_next_scheduled( 'delete_spam_daily_event' ) ) wp_schedule_event( time(), 'daily', 'delete_spam_daily_event'); } add_action('wp', 'delete_spam_daily_activation'); function delete_spam_daily() { global $wpdb; $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_approved = %s", 'spam' ) ); }
这段代码的思路如下
- 使用wp_schedule_event()函数注册一个cron hook,设置改hook每天执行一次
- 将函数delete_spam_daily()挂在到我们注册hook上(delete_spam_daily_activation),这样该函数每天执行一次,执行的内容是删除wp_comments表中comment_approved=spam的数据,这些都是垃圾评论。
使用Akismet自带功能
Akismet自带自动删除垃圾评论的功能,只是时间间隔比较长,只能选择每月删除一次
Akismet注册的scheduled event如下,是每天执行的
wp_schedule_event(time(), 'daily', 'akismet_scheduled_delete');
也可以直接挂载函数到akismet_scheduled_delete钩子上执行我们的任务。Akismet自己挂载了两个函数
add_action('akismet_scheduled_delete', 'akismet_delete_old'); add_action('akismet_scheduled_delete', 'akismet_delete_old_metadata');
函数akismet_delete_old负责删除垃圾评论,虽然这个scheduled event每天执行一次,但删除操作并不是每天执行,原因如下
//function akismet_delete_old()执行的sql语句 $comment_ids = $wpdb->get_col("SELECT comment_id FROM $wpdb->comments WHERE DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam'");
有兴趣的朋友可以研究下挂载函数到akismet_scheduled_delete上执行每天删除的操作。
定期清理评论回收站
评论回收站默认是30天清空一次,如果你觉得这个间隔太长,可以设置的短一点,例如每天清空。
只需要在wp-config.php中添加如下代码,可以让WordPress每天清空垃圾评论一次
define('EMPTY_TRASH_DAYS', 1 );
如果设置成这样
define('EMPTY_TRASH_DAYS', 0 );
则完全禁用垃圾评论功能。
不错好东西,^_^。刚把定义设置好了,吧系统自动识别的垃圾移到垃圾筐里,。。。刚到这里又想起看看又没自动清理垃圾筐的代码。
我一个客户因为不知道用Akismet,把垃圾评论都审核出来了,有没办法已有的评论检查并标记为Spam然后一键清除?
这个我真没试验过,不过直接从数据库表wp_comments和wp_commentmeta里把评论都删除应该可以吧,如果你什么评论都不想要,网站内容也不多,这俩表直接清空了就完了。
引用:多谢留言,您的评论正在等待审核,请稍等^_^
————————————————————————
居然还要审核?!你设置什么敏感词了?
所有没发表过评论的都审核,光靠Akismet不管用
我通过google找到这篇文章,觉得博主的这篇文章还是不错的,但是博主的“文章目录”我很不喜欢。如果把它做成自动隐藏在屏幕左侧栏的话会好很多。
不喜欢就忽略呗,我的blog是实验性的,有好玩的东西就试验一下,my notebook而已。
如果不想看到,把浏览器拽窄一点,或者点下阅读模式,那东西就没了,有用的没用的都没了。
文章底部版权信息那块,头像被挤得好难受!!
ps:ie8
果然,多谢你告诉我哦。很久不用IE了,总是拿这网站做实验,看来以后还得注意一下哎