Como crear un cron para WordPress


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-&gt;query(
$wpdb-&gt;prepare(
"UPDATE $wpdb-&gt;posts SET `comment_status` = %s, `ping_status` = %s WHERE `post_date_gmt` &lt; 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' );