WordPress 自动定时清除垃圾评论


如果你使用了一些拦截垃圾评论的插件或者代码的话,难免在评论的 “垃圾评论” 分类里会出现一些垃圾评论,这些垃圾评论会存储在数据库里,占用数据库的空间。

Akismet 插件提供的定时清除垃圾评论功能就很好,不用对垃圾评论操心。如果你没使用 Akismet 插件又像定期清除垃圾评论怎么办呢?

针对这个问题,我简单研究了下,其实很简单。如果你要定时自动清除垃圾评论,你只需要修改 WordPress 当前主题的 functions.php(了解更多) 文件,然后在里边加上下边的代码:

/**
	*WordPress 自动定时清除垃圾评论
	*http://www.endskin.com/cron-delete-all-spam.html
*/
class Bing_cron_delete_spam{
 
	//每隔多少秒清理垃圾评论
	public $time = 604800;//自己修改时间,604800 为一周
 
	//Hook 名
	public $hook = 'delete_all_spam';
 
	//初始化
	function __construct(){
		add_action( 'init', array( $this, 'cron' ) );
		add_filter( 'cron_schedules', array( $this, 'schedules' ) );
		add_action( $this->hook, array( $this, 'delete' ) );
	}
 
	//设置定时任务
	function cron(){
		if( !wp_next_scheduled( $this->hook ) ) wp_schedule_event( current_time( 'timestamp' ), $this->hook, $this->hook );
	}
 
	//扩展定时器
	function schedules( $schedules ){
		$schedules[$this->hook] = array(
			'interval' => $this->time,
			'display' => __( '清除垃圾评论' )
		);
		return $schedules;
	}
 
	//删除垃圾评论
	function delete(){
		global $wpdb;
		$wpdb->delete( $wpdb->comments, array( 'comment_approved' => 'spam' ) );
	}
 
}
$cron_delete_spam = new Bing_cron_delete_spam;

你也可以根据代码注释修改清除的频率,默认是一周清除一次垃圾评论。

来自:EndSkin.


前一篇:
后一篇:

发表评论