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' );