Los trabajos cron son algo que usas todos los días, aunque no lo sepas. Se ejecutan detrás de escena, impulsando todos sus sitios web favoritos. ¡Y se merecen respeto!
En esta publicación, hablaré sobre los trabajos de Cron en general, le diré cómo los trabajos de WP-Cron son únicos y le mostraré un método básico sobre cómo agregar trabajos de Cron a WordPress. No soy un desarrollador curtido en la batalla, por lo que esta publicación tratará principalmente el tema desde la perspectiva de un desarrollador no profesional.
En un sentido general, Cron es una utilidad que lo ayuda a programar comandos o scripts para que se ejecuten en un momento específico. Los trabajos cron son las tareas resultantes. Entonces, en lenguaje humano, un trabajo de Cron le dice a su servidor algo como «ejecutar example.php a la medianoche todos los días».
Básicamente, los trabajos de Cron son una manera fácil de configurar tareas para que se ejecuten automáticamente, ya sea una sola vez o de forma recurrente.
Si es un usuario promedio, se beneficia de Cron todos los días, lo sepa o no. Por ejemplo, los trabajos de Cron son los que permiten que su herramienta de copia de seguridad ejecute una copia de seguridad automática a la misma hora todos los días.
Sin ellos, tendría que hacer clic manualmente en el botón de copia de seguridad cada vez que quisiera crear una nueva copia de seguridad de su sitio.
¿Cómo ayudan los trabajos de Cron a WordPress?
Ya mencioné un uso para WP-Cron: activar copias de seguridad para sus complementos de copia de seguridad de WordPress . Pero eso está lejos de ser el único uso.
Una de las implementaciones más visibles públicamente de WP-Cron son las actualizaciones automáticas. WP-Cron verifica periódicamente las últimas actualizaciones de software, temas y complementos. ¡Y luego te dice que presiones el botón de actualización para que tu sitio siga funcionando!
Además, WP-Cron también es lo que maneja la publicación de sus publicaciones programadas, el envío de pingbacks y trackbacks , y una serie de otras características potenciales agregadas por los complementos que está utilizando.

WP Crontrol es solo un complemento que ayuda con la configuración del trabajo cron
¿En qué se diferencia WP-Cron de Cron normal?
WordPress en realidad tiene su propio sistema para ejecutar trabajos de Cron. Y aunque el nombre podría sugerir que los dos son idénticos, existen algunas diferencias muy importantes entre los dos.
Con trabajos Cron normales, puede especificar una fecha y hora exactas para que se ejecute cada trabajo. Por ejemplo, básicamente puede decir: «Quiero que este script se ejecute exactamente a las 10:15:22 el 8 de agosto de 2016». Y como un reloj, su secuencia de comandos se ejecutará exactamente en ese momento.
Pero WP-Cron funciona de manera diferente…
WP-Cron no funciona de esa manera. En cambio, WP-Cron solo se ejecuta cuando alguien visita su sitio. Cada vez que alguien visita su sitio, WP-Cron verifica si hay tareas programadas que deben ejecutarse. Si encuentra que se ha cumplido el tiempo programado de una tarea, continuará y ejecutará esa tarea.
Pero aquí está el problema potencial con WP-Cron…
Si nadie visita su sitio durante un período de tiempo, no hay nada que le indique a WP-Cron que se ejecute y verifique las tareas que deben completarse.
Obviamente, si su sitio recibe miles de visitas diarias , es poco probable que esto sea un problema. Pero si su sitio solo recibe unos pocos visitantes al día pero aún necesita que los trabajos Cron de un complemento se ejecuten cada 30 minutos, encontrará problemas.
Por ejemplo, supongamos que un complemento de WordPress intenta enviar un correo electrónico automático a las 2 am. Si nadie visita su sitio hasta las 6 am (una posibilidad real a menos que tenga una audiencia global), entonces el correo electrónico no se enviará hasta las 6 am suponiendo que no esté utilizando un servicio de terceros.
Además, a veces los complementos de almacenamiento en caché , los problemas de DNS o los conflictos de complementos pueden hacer que WP-Cron no se ejecute.
Sin embargo, hay formas de solucionar este problema. Por ejemplo, Harish Chouhan tiene una buena publicación que detalla cómo establece un verdadero trabajo de Cron para llamar a wp-cron y, por lo tanto, activar trabajos de WP-Cron a intervalos regulares.
Cómo agregar trabajos de WP-Cron
Cubriré brevemente cómo agregar trabajos recurrentes básicos y trabajos programados únicos. Luego, lo vincularé con algunos recursos que cubren cómo puede agregar trabajos de WP-Cron aún más complejos.
Cómo agregar un trabajo recurrente de WP-Cron
Para agregar un trabajo WP-Cron recurrente, la mayoría de los fragmentos de código y argumentos a los que hago referencia provendrán de esta parte del códice de WordPress . Entonces, si necesita más aclaraciones sobre algo, le recomiendo que comience allí.
Una cosa importante para recordar es que los trabajos de WP-Cron se ejecutan en intervalos , no en tiempos específicos. Por ejemplo, si programa una tarea para que comience a las 12:00 p. m. y se ejecute en un intervalo de dos horas, se ejecutará primero a las 12:00 p. m. Luego otra vez a las 2 pm, y así sucesivamente.
Como ejemplo, para agregar una tarea recurrente por hora, usaría este marco:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
register_activation_hook( __FILE__ , 'my_activation' ); function my_activation() { if (! wp_next_scheduled ( 'my_hourly_event' )) { wp_schedule_event(time(), 'hourly' , 'my_hourly_event' ); } } add_action( 'my_hourly_event' , 'do_this_hourly' ); function do_this_hourly() { // do something every hour } |
Cómo agregar un trabajo WP-Cron de una sola vez
Para agregar un trabajo WP-Cron de una sola vez, puede usar el siguiente ejemplo de código como base. Al igual que con el ejemplo anterior, si necesita más aclaraciones, le recomiendo que consulte esta página en el códice.
Nuevamente, recuerde que incluso si programa un evento para que se ejecute en un momento específico, solo se ejecutará en ese momento si su sitio de WordPress recibe una visita a la misma hora.
Como ejemplo, para ejecutar una tarea una hora después de la hora actual, usaría este marco:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
function do_this_in_an_hour() { // do something } add_action( 'my_new_event' , 'do_this_in_an_hour' ); // put this line inside a function, // presumably in response to something the user does // otherwise it will schedule a new event on every page visit wp_schedule_single_event( time() + 3600, 'my_new_event' ); // time() + 3600 = one hour from now. |
Lecturas adicionales sobre cómo agregar trabajos de WP-Cron
Si desea profundizar en cómo agregar trabajos de WP-Cron, aquí hay algunas lecturas adicionales excelentes:
- Programe eventos usando WordPress Cron : Smashing Magazine tiene una guía muy detallada para agregar trabajos de WP-Cron.
- Configuración adecuada de trabajos cron de WordPress : Tom McFarlin explica cómo evitar el problema de que WP-Cron requiera visitas para ejecutarse.
- Dominar WordPress Cron para programar eventos : SitePoint tiene una excelente guía sobre el uso de WP-Cron para programar eventos.
Cómo agregar y ver trabajos de WP-Cron con un complemento
Ver los trabajos de WP-Cron es una forma útil de depurar su sitio/complemento o simplemente echar un buen vistazo a lo que se está ejecutando en su sitio de WordPress.
Para ver todos los trabajos de WP-Cron programados en su sitio de WordPress, puede usar un complemento llamado WP-Crontrol . Como beneficio adicional, también puede usar el complemento para agregar nuevos trabajos de WP-Cron.
Simplemente instálelo y actívelo como lo haría con cualquier otro complemento. Luego, puede ver todos los eventos WP-Cron existentes para su sitio de WordPress yendo a Herramientas → Eventos Cron :
También puede agregar fácilmente eventos Cron regulares y eventos PHP Cron en la parte inferior de esa página:
Y otra cosa interesante que le permite hacer el complemento es definir nuevos intervalos para los trabajos de Cron. Puede hacerlo yendo a Configuración → Horarios de Cron :
Envolviendo las cosas
¡Ahí está! Una introducción rápida y sucia a los trabajos de WP-Cron. Honestamente, a menos que sea un desarrollador, probablemente nunca necesite conocer los trabajos de WP-Cron (aunque se beneficiará de ellos). Pero, siempre es genial echar un vistazo debajo del capó, ¿verdad?
¿Has intentado implementar trabajos cron en WordPress? Comparte tus experiencias aquí.
Imagen en miniatura del artículo por Azad Ahmadov / shutterstock.com