lunes, 8 de diciembre de 2014

WordPress - Tiempos personalizados para cron

Cuando usamos algún cron en WordPress, siempre es necesario seleccionar cada cuanto queremos que se ejecute la tarea en cuestión, por defecto solo podemos usar hourly (cada hora), daily (diario), y twicedaily (cada 2 días).

para ello podemos usar la siguiente función, en donde al array $schedules, le agregaremos tantos como necesitemos tipo $schedules['minute'], lo cual siempre igualaremos a un array que contenga interval, y display.


  • Interval: es el tiempo cada cuanto se ejecutara en segundos, por ejemplo si queremos 1 minuto, deberemos poner 60, 2 horas 7600, etc
  • Display: es el titulo que se nos mostrara.
El nombre que le demos entre los corchetes es el que deberemos escribir también en la tarea en cuestión.
El último paso seria añadir nuestra función al filter cron_schedules.
Os dejo una función que estoy usando yo, en la que le añado 3 nuevos intervalos, cada minuto, cada 15 días, y una vez al mes.

/**
 * Función que permite añadir intervalos personalizados; por defecto únicamente tenemos:
 * hourly
 * twicedaily
 * daily
 *
 * @param array $schedules
 * @return array
 */
function my_intervals($schedules) {
    $schedules['minute'] = array(
        'interval' => 60,
        'display' => __('Once a Minute')
    );
       $schedules['fifteen'] = array(
        'interval' => 1317600,
        'display' => __('Once a fifteen')
    );
    $schedules['monthly'] = array(
        'interval' => 2635200,
        'display' => __('Once a month')
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'my_intervals');
Como siempre, espero os sirva de ayuda.

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