Cron job example
// 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 )
)
);
}
add_action( 'disable_old_posts_comments_action_hook', 'disable_old_posts_comments_action_hook' );
// Schedule Cron Job Event
function disable_old_posts_comments_cron_job() {
if ( ! wp_next_scheduled( 'disable_old_posts_comments_action_hook' ) ) {
wp_schedule_event( time(), 'daily', 'disable_old_posts_comments_action_hook' );
}
}
add_action( 'wp', 'disable_old_posts_comments_cron_job' );