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:
- [codigo]hourly[/codigo] – Cada hora
- [codigo]twicedaily[/codigo] – Dos veces al día
- [codigo]daily[/codigo] – 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:
function 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');
Donde [codigo]interval[/codigo] es el tiempo en segundos que creamos.
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…
[titulo]¿Cómo usamos intervalos de tiempo personalizados en cronjobs?[/titulo]
Añadimos a nuestro functions.php lo siguiente:
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 [subraya_verde]el cron de WordPress no es un cron real, y por lo tanto se ejecuta únicamente cuando recibe visitas.[/subraya_verde]
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