lunes, 8 de diciembre de 2014

WordPress - Ejecutar una tarea en cron

Para ejecutar algo en un cron tan solo necesitamos, crear la función que queremos que se ejecute de manera automática cada cierto tiempo, y registrarla en los eventos de WordPress, antes de registrarla deberemos comprobar si ya esta registrada, si no la registrará una vez por cada pasada en el functions.php, y nuestra función se registrara cada vez, imagínate que tienes algo programado para que se ejecute cada hora, y desde que lo publicas hasta que pasa la 1 hora, as recibido la miseria de 5 visitas, las cuales además no han navegado por la web, pues tu función se ejecutara 5 veces por cada hora, hay que tener mucho cuidado con eso.
Lo solucionamos con el siguiente código

if ( !wp_next_scheduled( 'mailTest_hook' ) ) {
    wp_schedule_event( time(), 'hourly', 'mailTest_hook' );
}
 Después deberemos registrar el action, que vincule nuestro hook con nuestra función
add_action( 'mailTest_hook', 'mailTest_function' );
y por último nuestra función, en este ejemplo mandamos un mail
function mailTest_function() {
         wp_mail( 'info@rogamainformatica.es', 'Automatic email send Test', 'Esto es un mail de test enviado cada hora');
}
Aquí os dejo el código completo:
/**
 * Añado una función automática, para que se ejecute cada hora
 */
if ( !wp_next_scheduled( 'mailTest_hook' ) ) {
    wp_schedule_event( time(), 'hourly', 'mailTest_hook' );
}
add_action( 'mailTest_hook', 'mailTest_function' );
function mailTest_function() {
         wp_mail( 'info@rogamainformatica.es', 'Automatic email send Test', 'Esto es un mail de test enviado cada hora');
}
Si la frecuencias que nos da WP por defecto, se nos quedan cortas, podemos ampliarlo, como necesitemos como explico en WordPress tiempos personalizados para cron

Fuente: http://codex.wordpress.org/Function_Reference/wp_schedule_event