Un sitio cuya entrada programada para las nueve de la mañana solo se publica a media mañana, o cuya copia de seguridad nocturna parece saltarse una noche de cada dos, suele sufrir un malentendido muy extendido sobre el funcionamiento de WordPress: el sistema encargado de ejecutar esas tareas programadas, llamado WP-Cron, no es un verdadero planificador en el sentido que entendería un servidor.

Lo que WP-Cron hace realmente

Un cron real, a nivel de sistema, es un mecanismo del servidor que se dispara a horas fijas, independientemente de cualquier actividad externa, exactamente como un reloj. WP-Cron, por el contrario, solo se dispara cuando un visitante carga una página del sitio. En cada carga de página, WordPress comprueba si alguna tarea programada ha llegado a su hora, y si es así, la ejecuta en ese preciso momento en lugar de a la hora prevista. Este diseño, elegido originalmente para funcionar en cualquier hosting sin una configuración de servidor específica, funciona razonablemente bien mientras el sitio reciba un flujo regular de visitas.

El problema en un sitio con poco tráfico

Un sitio corporativo o un blog visitado por un puñado de personas al día puede pasar varias horas sin ninguna visita, especialmente por la noche. Si una tarea está programada para las tres de la madrugada y ningún visitante carga una página antes de las ocho, esa tarea simplemente no se ejecuta hasta ese momento. Una entrada prevista a primera hora de la mañana se publica por tanto con retraso, una copia de seguridad nocturna se desplaza en consecuencia, y un envío de correo programado sale mucho más tarde de lo previsto, sin que aparezca ningún error visible en la administración del sitio.

El problema inverso en un sitio con mucho tráfico

En un sitio que recibe un tráfico importante, WP-Cron se dispara en cada carga de página, lo que puede suponer una comprobación ejecutada decenas o cientos de veces por minuto. Esta comprobación repetida consume recursos del servidor de forma innecesaria, y puede contribuir a una ralentización general difícil de diagnosticar, ya que su efecto se mezcla con el de otros procesos del sitio en lugar de destacar como una causa aislada.

La solución recomendada: un cron real del sistema

La corrección estándar consiste en desactivar el comportamiento por defecto de WP-Cron añadiendo la línea define paréntesis comilla DISABLE_WP_CRON comilla coma true cierra paréntesis punto y coma en el archivo wp-config.php, y luego configurar un cron real a nivel de servidor, generalmente accesible a través del panel de administración del hosting o por línea de comandos. Este cron del sistema llama al archivo wp-cron.php del sitio a intervalos regulares, a menudo cada cinco minutos, garantizando una ejecución fiable de las tareas programadas independientemente del tráfico real del sitio. La mayoría de los proveedores de hosting orientados a WordPress ofrecen esta configuración en unos pocos clics desde su interfaz de gestión.

Diagnosticar una tarea programada que no se ejecuta

Antes de modificar la configuración, conviene comprobar con precisión qué tareas están programadas y en qué momento, algo que permite un plugin como WP Crontrol, que muestra la lista completa de eventos programados, permite dispararlos manualmente para probarlos, y ayuda a detectar una tarea bloqueada o duplicada, un problema frecuente cuando varios plugins programan comprobaciones similares sin coordinarse entre sí.

El caso de las tareas pesadas y repetitivas

Para procesos más complejos que una simple publicación diferida, como la sincronización regular de datos con un CRM o el envío automatizado de recordatorios a clientes, una biblioteca como Action Scheduler, integrada de forma nativa en WooCommerce pero utilizable de forma independiente, gestiona una cola persistente respaldada por base de datos, con un seguimiento preciso del estado de cada tarea. Este enfoque encaja mejor que un simple hook de WP-Cron para un desarrollo PHP a medida o una automatización de negocio que necesite mayor fiabilidad.

Puntos a verificar antes de publicar: confirmar que la sintaxis recomendada para desactivar WP-Cron en wp-config.php sigue sin cambios para las versiones actuales de WordPress, y comprobar que el plugin WP Crontrol mencionado sigue activamente mantenido y disponible en el directorio oficial en el momento de la publicación.