Ejecutar un cron-job en WordPress cada 5 minutos
El cron de WordPress, del que ya hablamos largo y tendido en Analizando el cron de WordPress línea a línea, trae de serie las siguienets frecuencias:
- hourly – Cada hora
- twicedaily – Dos veces al día
- daily – Una vez al día
Por lo tanto, si queremos usar cualquier otra, tendremos que crearla.
¿Cómo lo hacemos?
- Como es costumbre, vamos a nuestro functions.php vía FTP. Recordad que debemos hacer una copia de seguridad previa, y que lo ideal es modificar el functions.php de un tema hijo, así evitaremos perder los cambios en futuras actualizaciones.
- Añadimos la siguiente función:Donde interval es el tiempo en segundos que creamos.1234567891011121314function my_cron_schedules($schedules){if(!isset($schedules["5min"])){$schedules["5min"] = array('interval' => 5*60,'display' => __('Once every 5 minutes'));}if(!isset($schedules["30min"])){$schedules["30min"] = array('interval' => 30*60,'display' => __('Once every 30 minutes'));}return $schedules;}add_filter('cron_schedules','my_cron_schedules');
En este ejemplo se han creado 2, un intervalo de 5 minutos (5*60) y uno de media hora (30*60).
Con esto ya habremos creado las nuevas frecuencias pero…
¿Cómo usamos intervalos de tiempo personalizados en cronjobs?
Añadimos a nuestro functions.php lo siguiente:
1 2 3 4 5 | wp_schedule_event(time(), '5min', 'my_schedule_hook', $args); function my_schedule_hook(){ //Aquí el códiigo que quieras ejecutar con cierta periodicidad. } |
Recordemos que el cron de WordPress no es un cron real, y por lo tanto se ejecuta únicamente cuando recibe visitas.
Si, por ejemplo, nuestra web tiene poco tráfico, y debe ejecutarse una tarea cada 10min, en realidad ésto sólo sucederá si al menos una persona entra cada 10min.
Si queremos evitar ésto, tendremos que usar un crontab real, tal y como explicamos en este otro post: “¿Cansado de las tareas repetitivas? ¿Qué es cron?“.
Escribir comentario