+// Clear the Akismet logs hourly
+function custom_akismet_schedule_hourly_cron() {
+ // Use wp_next_scheduled to check if the event is already scheduled
+ $timestamp = wp_next_scheduled( 'custom_akismet_hourly_cron' );
+ //If $timestamp == false schedule daily backups since it hasn't been done previously
+ if( $timestamp == false ){
+ //Schedule the event for right now, then to repeat daily using the hook 'wi_create_daily_backup'
+ wp_schedule_event( time(), 'hourly', 'custom_akismet_hourly_cron' );
+ add_action( 'custom_akismet_hourly_cron', 'custom_akismet_delete_comments_now' );
+add_action( 'init', 'custom_akismet_schedule_hourly_cron' );
+function custom_akismet_submit_spam_comment( $comment_ID = 0, $reason ) {
+ wp_delete_comment( $comment_ID, true );
+add_action( 'akismet_submit_spam_comment', 'custom_akismet_submit_spam_comment', 10, 2 );
+function custom_akismet_delete_comment_interval( $interval = 15 ) {
+add_filter( 'akismet_delete_comment_interval', 'custom_akismet_delete_comment_interval' );
+add_filter( 'akismet_delete_commentmeta_interval', 'custom_akismet_delete_comment_interval' );
+function custom_akismet_delete_comments_now() {
+ $delete_limit = apply_filters( 'akismet_delete_comment_limit', defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 );
+ $delete_limit = max( 1, intval( $delete_limit ) );
+ $delete_interval = apply_filters( 'akismet_delete_comment_interval', 15 );
+ $delete_interval = max( 1, intval( $delete_interval ) );
+ while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL %d HOUR) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", $delete_interval, $delete_limit ) ) ) {
+ if ( empty( $comment_ids ) )
+ $wpdb->queries = array();
+ foreach ( $comment_ids as $comment_id ) {
+ do_action( 'delete_comment', $comment_id );
+ $comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) );
+ $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_id IN ( $comma_comment_ids )");
+ $wpdb->query("DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( $comma_comment_ids )");
+ clean_comment_cache( $comment_ids );
+ if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->comments ) ) // lucky number
+ $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}");