Deshabilitar WP-Cron en WordPress puede ser una buena decisión cuando quieres mejorar la estabilidad de las tareas programadas y reducir trabajo innecesario en cada carga de página. Pero hay algo importante que aclarar desde el inicio: no se trata de quitar el cron de WordPress y olvidarte de él, sino de reemplazar su disparo automático por visitas por una tarea real del servidor.
En otras palabras, WordPress seguirá necesitando ejecutar eventos programados. Lo que cambia es la forma en que se activan. En vez de comprobarlos con cada visita al sitio, lo hará mediante un cron job real, con intervalos definidos por ti y de forma mucho más predecible.
Qué es WP-Cron y para qué sirve
WP-Cron es el sistema con el que WordPress gestiona tareas programadas. El núcleo y muchos plugins lo utilizan para acciones como publicar entradas programadas, comprobar actualizaciones, ejecutar procesos internos o lanzar eventos recurrentes.
La diferencia frente a un cron real del sistema es que WP-Cron no corre de forma continua. En su lugar, WordPress revisa si hay tareas pendientes cuando alguien carga una página del sitio. Si encuentra eventos vencidos, intenta ejecutarlos en ese momento.
Eso funciona razonablemente bien en muchos sitios pequeños o medianos, pero también tiene limitaciones claras.
Por qué a veces conviene deshabilitar WP-Cron
Desactivar el disparo automático de WP-Cron suele ser útil en estos escenarios:
- Sitios con mucho tráfico: cada carga de página revisa tareas programadas y eso añade trabajo constante al servidor.
- Sitios con poco tráfico: si casi no hay visitas, los eventos pueden ejecutarse tarde o directamente acumularse.
- Webs con caché agresiva: aunque el sitio parezca activo para los usuarios, no siempre hay suficientes peticiones útiles a PHP como para que WP-Cron se dispare con la regularidad esperada.
- Sitios con frontend estático o headless: cuando WordPress funciona más como backend que como sitio tradicional, puede haber pocas cargas reales del lado de WordPress, así que un cron del servidor es bastante más confiable.
- Tiendas, membresías o sitios con automatizaciones: si dependes de tareas periódicas, correos, limpiezas, sincronizaciones o publicaciones programadas, conviene que el disparo no dependa del tráfico del sitio.
En estos casos, un cron real del servidor aporta algo muy valioso: regularidad. En vez de depender de si alguien visitó la web o no, las tareas se ejecutan en el intervalo que definas.
Qué pasa con los sitios estáticos
Este punto merece una aclaración aparte. Si tienes un sitio WordPress tradicional con caché, un frontend desacoplado o una capa estática delante, deshabilitar WP-Cron y moverlo al servidor suele tener bastante sentido. La razón es simple: aunque el contenido público se entregue de forma muy rápida o estática, WordPress sigue necesitando ejecutar tareas internas.
En cambio, si hablamos de un sitio 100% estático donde WordPress ya no participa en producción ni actúa como backend activo, entonces realmente no hay un WP-Cron operativo que optimizar. En ese escenario, esta configuración deja de ser relevante porque WordPress no está ejecutando esas tareas en vivo.
Cuándo no deberías deshabilitarlo sin más
Lo que no conviene hacer es desactivar WP-Cron y no poner nada en su lugar. Si haces eso, WordPress deja de lanzar automáticamente sus tareas programadas y empiezan a fallar funciones que muchas veces parecen invisibles hasta que dejan de funcionar.
Por eso, la regla correcta es esta: si deshabilitas WP-Cron, debes reemplazarlo por un cron real del servidor.
Cómo deshabilitar WP-Cron en WordPress
El cambio se hace en el archivo wp-config.php, ubicado en la raíz de tu instalación. Antes de la línea final que indica que dejes de editar, agrega esto:
define( 'DISABLE_WP_CRON', true );
Con eso evitas que WordPress intente ejecutar WP-Cron en cada carga de página. Ojo: esto no elimina el sistema de eventos. Solo impide que se dispare automáticamente con las visitas.
Cómo agregar el cron en el servidor
Una vez deshabilitado el disparo automático, el siguiente paso es crear una tarea programada real en tu servidor. Hay varias formas de hacerlo, pero la más común es lanzar una solicitud periódica a wp-cron.php.
Opción 1: usando wget
Es una de las fórmulas más comunes y la que también documentan WordPress y DreamHost.
*/15 * * * * wget -q -O - https://tudominio.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Este ejemplo ejecuta el cron cada 15 minutos. Si tu sitio depende más de automatizaciones o eventos frecuentes, puedes reducir el intervalo.
Opción 2: formato sugerido por WordPress con wget
*/15 * * * * wget --delete-after https://tudominio.com/wp-cron.php >/dev/null 2>&1
La idea es la misma: hacer una petición periódica al archivo que dispara los eventos programados.
Opción 3: Task Scheduler en Windows
Si trabajas en un entorno Windows Server, WordPress también documenta una opción con PowerShell:
powershell "Invoke-WebRequest https://tudominio.com/wp-cron.php"
Cada cuánto conviene ejecutarlo
No existe un único intervalo válido para todos los sitios. Depende del tipo de web y de lo sensibles que sean sus tareas programadas.
- Cada 15 minutos: suele ser suficiente para muchos blogs, webs corporativas o sitios informativos.
- Cada 5 minutos: tiene más sentido en eCommerce, membresías, automatizaciones, integraciones o sitios donde importa más la puntualidad de los eventos.
- Cada minuto: solo suele justificarse en casos muy concretos y con servidores preparados para ello.
La clave no es poner el intervalo más corto posible, sino uno razonable para tu carga real y para las necesidades del proyecto.
Qué ventajas tiene usar un cron real del servidor
- Menos trabajo en cada visita: WordPress deja de revisar eventos programados en cada carga de página.
- Mayor precisión: las tareas no dependen del tráfico del sitio para dispararse.
- Más estabilidad en sitios cacheados o desacoplados: aunque el frontend no genere muchas peticiones a PHP, los eventos seguirán corriendo.
- Mejor control operativo: puedes definir intervalos concretos y ajustarlos según el proyecto.
Qué tareas pueden verse afectadas si no lo configuras bien
Si desactivas WP-Cron y no lo sustituyes correctamente, puedes encontrarte con problemas como estos:
- entradas programadas que no se publican a tiempo;
- plugins que no ejecutan limpiezas o procesos automáticos;
- comprobaciones de actualizaciones que se retrasan;
- tareas recurrentes que empiezan a acumularse.
Por eso, más que una optimización aislada, esto debe verse como un cambio de método de ejecución.
Cómo comprobar que todo quedó bien
Después de hacer el cambio, conviene validar que los eventos siguen funcionando. Puedes hacerlo de varias formas:
- comprobando si las publicaciones programadas salen a tiempo;
- revisando si plugins que dependen de cron siguen ejecutando sus tareas;
- usando WP-CLI para probar o listar eventos programados.
Por ejemplo, con WP-CLI puedes revisar eventos o probar el sistema de cron desde consola:
wp cron test
wp cron event list
wp cron event run --due-now
Conclusión
Deshabilitar WP-Cron en WordPress puede ser una mejora real de rendimiento y estabilidad, especialmente en sitios con mucho tráfico, poco tráfico, caché agresiva, arquitectura headless o frontend estático. Pero el beneficio no está en apagarlo sin más, sino en mover su ejecución a un cron real del servidor.
Si lo haces bien, reduces comprobaciones innecesarias en cada visita y consigues que las tareas programadas dependan de un horario real, no del azar del tráfico. Y en proyectos donde la puntualidad de los procesos importa, eso suele ser bastante mejor que dejar todo en manos del comportamiento normal de WP-Cron.