# Qué es WP-Cron y cómo solucionar tareas programadas que no funcionan

**Categoría:** Desarrollo web · **Nivel:** Intermedio · **Lectura:** 19 min
**Publicada:** 2026-07-28 · **Actualizada:** 2026-07-28 · **Autoría:** Underc0de
**Versión HTML (canónica):** https://underc0de.org/guias/desarrollo-web/que-es-wp-cron-y-como-solucionar-tareas-programadas/

## Respuesta rápida

**WP-Cron** es el **sistema de tareas programadas de WordPress**: lo que se encarga de ejecutar cosas «a su hora», como **publicar una entrada programada**, hacer un **backup automático**, enviar correos periódicos, comprobar actualizaciones o limpiar la base de datos. El detalle que causa casi todos los problemas es *cómo* decide cuándo ejecutar: WP-Cron **no lo dispara un reloj real**, como haría el planificador de tareas de un sistema operativo. En su lugar, se dispara **con las visitas**: cada vez que alguien carga una página de tu sitio, WordPress comprueba «¿hay alguna tarea pendiente que ya tocaba?» y, si la hay, la ejecuta en ese momento. La consecuencia es la raíz de casi todos los fallos: **si nadie visita el sitio, nada se ejecuta**. Por eso una entrada programada para las 3 de la madrugada en un sitio con poco tráfico **no se publica a esa hora**, sino cuando llega la primera visita después —quizá a las 8—; y un backup nocturno programado **puede no hacerse nunca** si esa noche no entró nadie. El problema inverso también existe: en un sitio con **mucho tráfico**, WP-Cron se comprueba en *cada* visita, lo que añade una pequeña carga que puede afectar al rendimiento. La solución definitiva es la misma en ambos casos: **reemplazar WP-Cron por un cron real del servidor**. Se hace en dos pasos: **(1) desactivar** el disparo por visitas (una línea en `wp-config.php`) y **(2) programar** un cron de verdad en el hosting que llame al archivo `wp-cron.php` a intervalos fijos (por ejemplo, cada 5 o 15 minutos). Así las tareas se ejecutan a su hora *independientemente* de las visitas, con la fiabilidad de un reloj real. Entender que «WP-Cron depende de las visitas, no del reloj» es lo que explica todos estos fallos y su solución.

## Qué es WP-Cron

Un **cron**, en informática, es un **planificador de tareas**: un mecanismo que ejecuta acciones automáticamente en momentos determinados —«todos los días a las 3», «cada hora», «cada lunes»—. El nombre viene del planificador clásico de los sistemas Unix. **WP-Cron** es la versión que WordPress trae incorporada para gestionar sus propias tareas programadas: publicar entradas con fecha futura, revisar si hay actualizaciones, ejecutar los backups o las limpiezas de los plugins, enviar resúmenes por correo. Es una pieza esencial, porque muchas funciones de WordPress y de sus plugins dependen de que las tareas se ejecuten *cuando toca*.

> **La diferencia clave: visitas, no reloj**
>
> Acá está el concepto que lo explica todo. Un cron «de verdad» (el del sistema operativo del servidor) tiene un **reloj**: comprueba la hora constantemente y ejecuta la tarea en el instante programado, haya o no actividad. **WP-Cron no tiene reloj propio**. En su lugar, se apoya en las **visitas al sitio**: cada carga de página es una oportunidad para que WordPress mire si hay tareas vencidas y las ejecute. Es un diseño inteligente para que WordPress funcione en cualquier hosting sin configuración especial —no necesita acceso al planificador del sistema—, pero tiene una consecuencia inevitable: **WP-Cron solo se ejecuta cuando hay tráfico**. Sin visitas, el «reloj» de WordPress está parado.

## Por qué falla

Casi todos los fallos de tareas programadas en WordPress se explican por esa dependencia de las visitas. Los síntomas típicos:

| Síntoma | Por qué pasa |
|---|---|
| «Missed schedule» en una entrada | Tocaba publicarla, pero no hubo visita a esa hora para dispararla |
| El backup nocturno no se hizo | Nadie entró de madrugada; WP-Cron no se ejecutó |
| Los correos periódicos no salen | La tarea de envío quedó pendiente sin visita que la dispare |
| El sitio con mucho tráfico va algo lento | WP-Cron se comprueba en cada visita, añadiendo carga |

> **Atención**
>
> Lo curioso de WP-Cron es que genera **dos problemas contrarios** según el tráfico del sitio, pero ambos tienen la **misma raíz**. En sitios con **poco tráfico**, el problema es que las tareas **no se ejecutan a tiempo** (o no se ejecutan) porque no hay visitas que las disparen: la entrada nocturna que no se publica, el backup que no se hace. En sitios con **mucho tráfico**, el problema es el contrario: WP-Cron se comprueba en *cada una* de las miles de visitas, y aunque cada comprobación es ligera, en conjunto añade una **carga innecesaria** que puede notarse en el rendimiento (y suma a la [lentitud general](../como-acelerar-el-panel-de-administracion-de-wordpress/index.md)). La buena noticia es que la **misma solución arregla ambos**: desconectar WP-Cron de las visitas y darle un reloj real.

## El cron real

La solución definitiva es **reemplazar el disparo por visitas por un cron real del servidor**. Son dos pasos:

- **1. Desactivar el disparo por visitas.** En `wp-config.php` se añade la línea que define `DISABLE_WP_CRON` como verdadero. Esto le dice a WordPress que deje de comprobar tareas en cada carga de página. (Solo con esto, ¡las tareas dejarían de ejecutarse! Falta el paso 2.)
- **2. Programar un cron real.** En el panel del hosting (la sección de «tareas programadas» o «cron jobs») se crea una tarea que llame al archivo `wp-cron.php` del sitio a intervalos fijos —cada 5, 10 o 15 minutos es lo habitual—. Ese cron real tiene reloj: ejecuta a su hora, haya visitas o no.

> **Atención**
>
> Al programar el cron real hay que elegir cada cuánto se ejecuta, y conviene un **equilibrio**. Muy espaciado (por ejemplo, una vez al día) y las tareas frecuentes se retrasan; una entrada programada podría tardar hasta un día en publicarse. Muy frecuente (cada minuto) y añadís carga innecesaria, sobre todo si hay tareas pesadas. Para la mayoría de los sitios, **cada 5 a 15 minutos** es un buen punto medio: suficiente para que las publicaciones y los correos salgan casi a su hora, sin sobrecargar. Un detalle: este cambio necesita **acceso al panel del hosting**; no todos los planes de alojamiento más básicos lo ofrecen, aunque la mayoría sí. Si tu hosting no permite crear tareas programadas, existen servicios externos que llaman a tu `wp-cron.php` a intervalos, o podés dejar WP-Cron como está si el sitio tiene tráfico constante. Para tareas críticas como los [backups automáticos](../como-realizar-y-restaurar-backups-de-wordpress/index.md), el cron real es muy recomendable, porque no querés que tu copia de seguridad dependa de que alguien visite el sitio esa noche.

## Errores frecuentes

- **Desactivar WP-Cron sin programar el cron real.** Si solo hacés el paso 1, las tareas dejan de ejecutarse por completo; hay que hacer los dos pasos.
- **Culpar a la fecha del sistema.** El «missed schedule» casi nunca es la hora del servidor; es que no hubo visita que disparara la tarea.
- **Confiar backups críticos a WP-Cron por visitas.** Un backup que depende del tráfico puede no hacerse; usar un cron real.
- **Programar el cron cada minuto sin necesidad.** Añade carga; para la mayoría, cada 5-15 minutos basta.
- **No revisar las tareas programadas.** Un plugin puede dejar tareas huérfanas o duplicadas que conviene vigilar.
- **Asumir que todos los hosting permiten cron.** Comprobar que el plan ofrece tareas programadas antes de depender de ello.
- **Ignorar el problema en sitios de mucho tráfico.** Ahí WP-Cron añade carga en cada visita; el cron real también lo resuelve.

## Preguntas frecuentes

**¿Qué es WP-Cron?**
WP-Cron es el sistema de tareas programadas que WordPress incorpora de serie para ejecutar automáticamente determinadas acciones en los momentos en que deben realizarse, sin intervención manual. Para entenderlo conviene saber primero qué es un cron en informática: un cron es un planificador de tareas, es decir, un mecanismo que ejecuta acciones de forma automática en momentos determinados, como todos los días a una hora concreta, cada hora o cada semana, y su nombre proviene del planificador de tareas clásico de los sistemas Unix. WP-Cron es la versión que WordPress trae integrada para gestionar sus propias tareas programadas, entre las que se encuentran acciones muy habituales e importantes como publicar las entradas que se han programado con una fecha futura, comprobar periódicamente si hay actualizaciones disponibles del propio WordPress, de los temas y de los plugins, ejecutar los backups o copias de seguridad automáticas, realizar las limpiezas y mantenimientos que programan diversos plugins, y enviar correos periódicos como resúmenes o notificaciones. Es, por tanto, una pieza esencial del funcionamiento de WordPress, ya que muchas funciones tanto del propio sistema como de sus plugins dependen de que estas tareas se ejecuten cuando corresponde. Sin embargo, WP-Cron tiene una peculiaridad muy importante en su forma de funcionar que es la causa de la mayoría de los problemas relacionados con las tareas programadas en WordPress: a diferencia de un cron real del sistema operativo, WP-Cron no dispone de un reloj propio que compruebe la hora de forma constante y ejecute las tareas en el instante exacto programado. En su lugar, WP-Cron se apoya en las visitas al sitio para funcionar, de manera que cada vez que alguien carga una página del sitio, WordPress aprovecha esa carga para comprobar si hay alguna tarea programada que ya debería haberse ejecutado y, en caso afirmativo, la ejecuta en ese momento. Este diseño tiene la ventaja de que permite que WordPress funcione en cualquier alojamiento sin necesidad de configuración especial ni de acceso al planificador de tareas del sistema, pero conlleva la limitación fundamental de que las tareas solo se ejecutan cuando hay tráfico en el sitio, lo que explica por qué a veces las tareas programadas no se ejecutan cuando se espera.

**¿Por qué WP-Cron depende de las visitas y no de un reloj?**
WP-Cron depende de las visitas en lugar de un reloj real debido a una decisión de diseño de WordPress orientada a que el sistema pueda funcionar en cualquier tipo de alojamiento web sin necesitar configuración especial ni acceso a las herramientas del sistema operativo del servidor, lo que constituye a la vez su principal ventaja y su principal limitación. Un cron real, como el que ofrecen los sistemas operativos de los servidores, dispone de un reloj y comprueba la hora de forma constante, ejecutando cada tarea programada en el instante exacto para el que fue planificada, con independencia de que en ese momento haya o no actividad en el sitio. Sin embargo, para poder utilizar ese cron real haría falta tener acceso al planificador de tareas del sistema operativo del servidor y configurarlo, algo que no siempre está disponible ni resulta sencillo, especialmente en los alojamientos compartidos más básicos, y que además complicaría la instalación de WordPress. Para evitar esa dependencia y lograr que WordPress funcione de forma autónoma en cualquier alojamiento nada más instalarlo, sus creadores optaron por un sistema propio que no necesita el cron del sistema operativo: WP-Cron, que se dispara aprovechando las visitas al sitio. El funcionamiento es el siguiente: cada vez que un visitante carga cualquier página del sitio, WordPress aprovecha esa petición para comprobar si existe alguna tarea programada cuya hora de ejecución ya haya pasado, y si la encuentra, la ejecuta en ese momento. De este modo, las visitas actúan como el pulso que mantiene en marcha el sistema de tareas, sustituyendo al reloj que tendría un cron real. La ventaja de este enfoque es evidente: WordPress puede gestionar sus tareas programadas en cualquier alojamiento sin configuración adicional, lo que simplifica enormemente su uso y lo hace accesible para cualquiera. Pero la contrapartida es igualmente clara e inevitable: como el sistema depende de las visitas para funcionar, si en un momento dado no hay visitas al sitio, WP-Cron no se dispara y, por tanto, las tareas programadas para ese momento no se ejecutan hasta que llegue la siguiente visita. Esta es la razón fundamental por la que las tareas programadas pueden fallar o retrasarse en WordPress, y comprenderla es la clave para entender tanto los problemas que provoca como su solución.

**¿Por qué mi entrada programada no se publicó a su hora?**
Una entrada programada en WordPress no se publica exactamente a la hora prevista, o incluso no llega a publicarse mostrando un aviso de programación perdida, debido a la forma en que funciona WP-Cron, que depende de las visitas al sitio para ejecutar las tareas y no de un reloj real. Cuando se programa una entrada para que se publique en una fecha y hora futuras, WordPress crea una tarea programada en WP-Cron encargada de realizar esa publicación en el momento indicado. Sin embargo, como WP-Cron no tiene un reloj propio que ejecute la tarea en el instante exacto, sino que se dispara cuando alguien visita el sitio, la publicación de la entrada solo se producirá cuando llegue la primera visita a partir de la hora programada. Esto significa que si se programa una entrada para publicarse a las tres de la madrugada en un sitio que a esa hora no recibe visitas, la entrada no se publicará a las tres, sino que quedará pendiente hasta que llegue la primera visita después de esa hora, que podría ser, por ejemplo, a las ocho de la mañana, momento en el que WP-Cron detectaría que había una publicación pendiente y la ejecutaría. En sitios con muy poco tráfico, este retraso puede ser considerable, e incluso en casos extremos la entrada puede quedar marcada con un error de programación perdida, en inglés missed schedule, que indica que la tarea de publicación no se ejecutó a su hora. Es un error muy común que suele confundir a los usuarios, que a menudo sospechan que el problema está en la hora o la zona horaria del servidor, cuando en realidad la causa casi siempre es simplemente que no hubo ninguna visita al sitio en el momento programado para disparar la tarea de publicación. Por tanto, la explicación de que una entrada programada no se publique a su hora no es un fallo del sistema ni un problema de configuración de la fecha, sino una consecuencia directa del diseño de WP-Cron y de su dependencia de las visitas. La solución a este problema consiste en reemplazar el disparo de WP-Cron por visitas por un cron real del servidor, que ejecute las tareas a su hora exacta con independencia del tráfico, con lo que las entradas programadas se publicarían puntualmente aunque nadie estuviera visitando el sitio en ese momento.

**¿Cómo se reemplaza WP-Cron por un cron real del servidor?**
Reemplazar WP-Cron por un cron real del servidor es la solución definitiva a los problemas de tareas programadas en WordPress, y consiste en desconectar el sistema del disparo por visitas y programar en su lugar un cron auténtico del servidor que ejecute las tareas a intervalos fijos con la fiabilidad de un reloj real, lo que se realiza en dos pasos que deben hacerse ambos. El primer paso es desactivar el disparo de WP-Cron por las visitas, lo que se consigue añadiendo en el archivo de configuración principal de WordPress, llamado wp-config.php, una línea que define la constante correspondiente a la desactivación de WP-Cron poniéndola en verdadero. Con esta línea, se le indica a WordPress que deje de comprobar y ejecutar tareas programadas en cada carga de página, con lo que se elimina tanto el problema de la dependencia de las visitas como la carga que esa comprobación añade en cada visita. Es fundamental tener presente que este primer paso, hecho por sí solo, dejaría las tareas programadas sin ejecutarse en absoluto, ya que se elimina el único mecanismo que las disparaba, por lo que es imprescindible completar el segundo paso. El segundo paso es programar un cron real en el servidor a través del panel de control del alojamiento, que normalmente dispone de una sección llamada tareas programadas o trabajos cron. En esa sección se crea una nueva tarea programada que se encargue de llamar al archivo wp-cron.php del sitio a intervalos fijos, por ejemplo cada cinco, diez o quince minutos. Este cron del servidor sí dispone de un reloj real, de manera que ejecutará la llamada a wp-cron.php puntualmente a los intervalos configurados, haya o no visitas al sitio, y en cada una de esas ejecuciones WordPress comprobará y realizará las tareas programadas que correspondan. De este modo, las tareas se ejecutan de forma fiable y a su hora independientemente del tráfico del sitio. Al configurar el cron real conviene elegir bien el intervalo, buscando un equilibrio, ya que un intervalo demasiado espaciado retrasaría las tareas frecuentes, mientras que uno demasiado corto añadiría carga innecesaria, siendo para la mayoría de los sitios un intervalo de entre cinco y quince minutos una buena elección. Hay que tener en cuenta que este método requiere disponer de acceso al panel del hosting con la posibilidad de crear tareas programadas, algo que ofrecen la mayoría de los alojamientos aunque no todos los planes más básicos, y que para las tareas críticas como los backups automáticos el cron real es especialmente recomendable, ya que no conviene que una copia de seguridad dependa de que alguien visite el sitio en el momento previsto.

**¿WP-Cron puede afectar al rendimiento del sitio?**
Sí, WP-Cron puede afectar al rendimiento del sitio, y curiosamente lo hace de forma opuesta según el nivel de tráfico, ya que en sitios con poco tráfico el problema es que las tareas no se ejecutan a tiempo, mientras que en sitios con mucho tráfico el problema es que WP-Cron añade una carga innecesaria al comprobarse en cada visita. En los sitios con mucho tráfico, el mecanismo de WP-Cron, que consiste en comprobar en cada carga de página si hay tareas programadas pendientes, se convierte en una fuente de carga adicional, porque esa comprobación se realiza en cada una de las numerosas visitas que recibe el sitio. Aunque cada comprobación individual es ligera y consume pocos recursos, cuando se multiplica por miles de visitas el efecto acumulado puede llegar a ser apreciable y contribuir a ralentizar el sitio o a aumentar el consumo de recursos del servidor, sumándose a otros factores que afectan al rendimiento. En este sentido, en un sitio muy visitado, WP-Cron trabaja mucho más de lo necesario, ya que las tareas programadas no requieren comprobarse en cada visita, sino que bastaría con hacerlo a intervalos regulares. Por el contrario, en los sitios con poco tráfico, WP-Cron no supone una carga apreciable, pero presenta el problema opuesto, que es que las tareas programadas no se ejecutan de forma fiable ni puntual, porque dependen de que lleguen visitas para dispararse, lo que provoca que las entradas programadas se retrasen o no se publiquen y que los backups u otras tareas automáticas no se realicen. Lo interesante es que ambos problemas, aunque son opuestos y afectan a tipos de sitios diferentes, tienen la misma causa raíz, que es la dependencia de WP-Cron respecto a las visitas, y por tanto se solucionan de la misma manera, que es reemplazar el disparo por visitas por un cron real del servidor. Al hacer este cambio, en los sitios con mucho tráfico se elimina la carga de comprobar las tareas en cada visita, ya que la comprobación pasa a realizarse solo a intervalos fijos, y en los sitios con poco tráfico se garantiza que las tareas se ejecuten puntualmente con independencia del tráfico. Por tanto, reemplazar WP-Cron por un cron real es beneficioso para el rendimiento y la fiabilidad tanto en sitios muy visitados como en sitios con poca actividad, aunque por motivos distintos en cada caso.

**¿Todos los hosting permiten programar un cron real?**
No todos los alojamientos web permiten programar un cron real del servidor, aunque la mayoría de ellos sí ofrecen esta posibilidad, por lo que antes de depender de un cron real conviene comprobar si el plan de alojamiento contratado dispone de esa funcionalidad. La capacidad de crear tareas programadas o trabajos cron en el servidor suele estar disponible en la mayoría de los paneles de control de alojamiento, especialmente en los alojamientos de calidad media y alta, en los servidores privados virtuales y en los servidores dedicados, donde el usuario tiene mayor control sobre la configuración. Sin embargo, algunos planes de alojamiento compartido muy básicos o económicos pueden no ofrecer acceso a la creación de tareas programadas, con el fin de limitar el uso de recursos o simplificar el servicio, en cuyo caso no sería posible configurar un cron real por la vía habitual del panel de control. Para comprobar si el alojamiento permite programar un cron real, hay que revisar el panel de control del hosting en busca de una sección dedicada a las tareas programadas o trabajos cron, o bien consultar la documentación del proveedor o preguntar a su soporte técnico. Si el alojamiento sí lo permite, se puede aplicar la solución de reemplazar WP-Cron por un cron real siguiendo los dos pasos correspondientes. Si el alojamiento no permite crear tareas programadas, existen alternativas para conseguir un efecto similar. Una de ellas es utilizar un servicio externo de monitorización o de llamadas programadas, que se configura para que llame al archivo de WP-Cron del sitio a intervalos regulares desde fuera, cumpliendo así la función del reloj que WP-Cron no tiene. Otra opción, si el sitio recibe tráfico constante y suficiente a lo largo del día, es simplemente dejar WP-Cron con su funcionamiento por defecto, ya que en un sitio con visitas frecuentes las tareas se dispararán con la suficiente regularidad como para que no haya problemas significativos de retraso. En cualquier caso, para las tareas realmente críticas, como los backups automáticos, es muy recomendable asegurarse de que se ejecutan de forma fiable mediante un cron real o un servicio externo, ya que no conviene que una copia de seguridad dependa de que haya visitas en el momento adecuado. Por ello, conocer las capacidades del alojamiento en cuanto a tareas programadas es un aspecto a tener en cuenta al elegir un plan de hosting y al planificar la automatización de un sitio de WordPress.

## Fuentes

Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.

### Aportes de la comunidad Underc0de

1. **Underc0de, foro.** [Diseño y programación web](https://underc0de.org/foro/diseno-y-programacion-web/). WordPress y automatización.
2. **Underc0de, blog.** [Blog de Underc0de](https://blog.underc0de.org/). Mantenimiento de sitios web.

### Documentación oficial

1. **WordPress.org.** [WordPress Cron](https://developer.wordpress.org/plugins/cron/). Documentación del sistema de tareas.
2. **WordPress.org.** [Hooking into the system task scheduler](https://developer.wordpress.org/plugins/cron/hooking-into-the-system-task-scheduler/). Reemplazar WP-Cron por un cron real.
3. **WordPress.org.** [Scheduled Posts](https://wordpress.org/documentation/article/scheduled-posts/). Publicaciones programadas.
4. **Cron (Wikipedia).** [Cron (Unix)](https://es.wikipedia.org/wiki/Cron_(Unix)). El planificador de tareas del sistema.

## Guías relacionadas

- [Backups de WordPress](../como-realizar-y-restaurar-backups-de-wordpress/index.md)
- [Envío de correos](../como-solucionar-problemas-de-envio-de-correos-en-wordpress/index.md)
- [Panel lento](../como-acelerar-el-panel-de-administracion-de-wordpress/index.md)
- [Tipos de hosting](../tipos-de-hosting-web-y-como-elegir/index.md)
- [Índice de Desarrollo web](../index.md)
