Disable commenting on old posts
Source: http://www.developerdrive.com/2013/06/using-wp_cron-to-disable-commenting-on-old-posts/
// Scheduled Action Hook function disable_old_posts_comments_action_hook( ) { global $wpdb; $days_to_close = 31; // disable comments and ping backs on posts older than 31 days $competition_posts = 10; // mark competition posts as private after 10 days $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET `comment_status` = %s, `ping_status` = %s WHERE `post_date_gmt` < DATE_SUB(%s, INTERVAL %d DAY);", array( 'closed', 'closed', current_time( 'mysql', 1 ), $days_to_close ) ) ); $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET `post_status` = %s WHERE `post_type` = %s AND `post_date_gmt` < DATE_SUB(%s, INTERVAL %d DAY);", array( 'private', 'competition', current_time( 'mysql', 1 ), $competition_posts ) ) ); } // Schedule Cron Job Event function disable_old_posts_comments_cron_job() { if ( ! wp_next_scheduled( 'disable_old_posts_comments_action_hook' ) ) { wp_schedule_event( current_time( 'timestamp' ), 'daily', 'disable_old_posts_comments_action_hook' ); } } add_action( 'wp', 'disable_old_posts_comments_cron_job' );