CMS WordPress

[WordPress] Ejecutar wp-cron en frecuencias personalizadas

[titulo]Ejecutar un cron-job en WordPress cada 5 minutos[/titulo]

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?

  1. 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.
  2. 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?«.

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

Escribir comentario

Haz clic aquí para dejar tu comentario