Muchas veces nos encontramos que necesitamos que un proceso se ejecute una vez al dia , o realice una operación cada xxx horas.
Para generar crons usaremos la funcion wp_schedule_event
Generar un cron en WordPress es fácil, seguramente lo mas complicado sea hacer la operación. Vamos a poner un par de ejemplos:
1.- Como lanzar un evento que envie un email diario.
// Funcion o accion a realizar function enviar_email( ) { return wp_mail( 'example@example.com', 'Notification ', 'Prueba', null ); } // Cron comprobamos sino existe la funcion ya asignada y sino existe programamos el evento function custom_cron_job() { if ( ! wp_next_scheduled( 'enviar_email' ) ) { wp_schedule_event( current_time( 'timestamp' ), 'daily', 'enviar_email' ); } } // agregamos la accion add_action( 'wp', 'custom_cron_job' );
2.- Como desactivar comentarios en entradas con mas de 30 dias.
// Funcion o accion a realizar function desacivar_comentarios_hook( ) { global $wpdb; $days_to_close = 30; // tiempo para desactivar lso comentarios</code> $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 ) ) ); } // Cron comprobamos sino existe la funcion ya asignada y sino existe programamos el evento function desactivar_comentarios_cron_job() { if ( ! wp_next_scheduled( 'desacivar_comentarios_hook' ) ) { wp_schedule_event( current_time( 'timestamp' ), 'daily', 'desacivar_comentarios_hook' ); } } // agregamos la accion add_action( 'wp', 'desactivar_comentarios_cron_job' );