Los CRON jobs se utilizan para programar tareas a horas, fechas o intervalos fijos y periódicos en tu sitio de WordPress. Algunos ejemplos de cron jobs en WordPress podrían ser programar la publicación de una entrada, comprobar si hay actualizaciones o ejecutar un plugin de copias de seguridad según un horario predefinido.
En WordPress, esto es gestionado por WP-Cron, que se utiliza para simular un cron del sistema. Sin embargo, dependiendo de la cantidad de tráfico de tu sitio, usar el gestor de cron integrado puede empezar a afectar a los tiempos de carga de tus páginas.
Así que hoy te vamos a enseñar cómo desactivar WP-Cron (wp-cron.php) y utilizar en su lugar un cron del sistema para mejorar el rendimiento.
¿Por qué desactivar WP-Cron?
En Kinsta gestionamos muchos sitios web con mucho tráfico y muy exigentes. Por eso, hemos observado muchos problemas de rendimiento con el gestor de tareas cron integrado en WordPress: WP-Cron.
Antes que nada, es importante entender que WP-Cron no es un cron job de verdad, sino simplemente algo que ha creado WordPress para imitar lo que hace el cron del sistema.
WP-Cron no se ejecuta de forma continua. Por defecto, el archivo wp-cron.php se activa cada vez que se carga una página, lo que en sitios con mucho tráfico puede causar problemas. Si un sitio no tiene suficientes hilos de PHP, a veces llega una solicitud, WordPress activa el cron, pero este tiene que esperar al worker y, por lo tanto, se queda ahí sin hacer nada.
Lo contrario también es cierto. Si un sitio no tiene mucho tráfico, las tareas programadas podrían no ejecutarse porque nadie ha cargado ninguna página.
Además, hay una razón de seguridad para desactivar WP-Cron. Como wp-cron.php es un archivo accesible públicamente, cualquiera puede activarlo enviando una solicitud a https://yourdomain.com/wp-cron.php.
En un sitio web concreto, esto se puede utilizar para aumentar la carga del servidor repetidamente, una forma sencilla pero eficaz de ralentizar o desestabilizar un sitio web. Desactivar WP-Cron cierra esa puerta por completo.
Cómo desactivar WP-Cron en WordPress (2 pasos)
Esto es lo que debes hacer (en este orden):
- Primero, configura una tarea cron a nivel de servidor para sustituir a WP-Cron
- A continuación, desactiva WP-Cron en tu
wp-config.php
Si desactivas primero WP-Cron sin configurar una alternativa, tus tareas programadas (programación de entradas, copias de seguridad, comprobaciones de actualizaciones de plugins, notificaciones por correo electrónico) dejarán de ejecutarse sin que te des cuenta. No aparecerán errores, simplemente no se ejecutarán esas tareas.
Paso 1: Configura una tarea cron a nivel de servidor
Ahora que ya sabes por qué WP-Cron puede ser un problema, aquí te explico cómo sustituirlo. El cron del sistema se ejecuta según una programación predefinida e incluso se recomienda en el manual oficial de plugins.
Elige el método que mejor se adapte a la configuración de tu alojamiento.
Usando cPanel
Si utilizas un proveedor de alojamiento con cPanel, puedes crear un cron job del sistema desde su panel de control. Primero, inicia sesión en cPanel. En la sección Avanzado, haz clic en Cron jobs.

En la sección Añadir nuevo cron job, puedes elegir entre varias programaciones predefinidas, como dos veces por hora o una vez a la semana. Es muy probable que tu proveedor de alojamiento tenga un límite en cuanto a la frecuencia con la que permite ejecutar cron jobs. En los alojamientos compartidos, lo normal es que se permita dos veces por hora.

Añade el siguiente comando. Sustituye https://domain.com por tu nombre de dominio. Este comando puede variar ligeramente dependiendo de cómo esté configurado tu alojamiento web. A continuación, haz clic en «Añadir Nuevo Cron Job»
wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

La parte >/dev/null 2>&1 del comando anterior desactiva las notificaciones por correo electrónico.
Usando SSH y Crontab
Si tienes acceso SSH a tu servidor, puedes configurar el cron directamente en el crontab de tu servidor. Esto funciona en cualquier servidor basado en Linux, independientemente del panel de control que utilices.
Conéctate por SSH y ejecuta:
crontab -e
A continuación, añade una de las siguientes líneas (elige una).
Usando wget (funciona en cualquier servidor):
*/15 * * * * wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Usando PHP directamente (un poco más rápido, sin sobrecarga HTTP):
*/15 * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1
Sustituye yourdomain.com y /path/to/wordpress por tu dominio real y la ruta de instalación de WordPress. El */15 ejecuta el cron cada 15 minutos, un buen valor por defecto para la mayoría de los sitios.
Usando WP-CLI
Si usas WP-CLI, este suele ser el método más sencillo. El comando cron integrado en WP-CLI solo ejecuta los eventos que realmente están programados, lo cual es más eficiente que llamar directamente a wp-cron.php. Añade esto a tu crontab mediante crontab -e:
*/15 * * * * cd /path/to/wordpress && wp cron event run --due-now --allow-root >/dev/null 2>&1
También puedes usar WP-CLI para revisar tus eventos programados en cualquier momento sin ejecutarlos:
wp cron event list
Esto resulta útil para solucionar problemas. Muestra todos los eventos de cron pendientes, cuándo está programada su ejecución y a qué hook están vinculados.
Usar una herramienta de terceros
Si no te sientes cómodo configurando cron jobs en tu servidor o tu proveedor de alojamiento no te da acceso, también puedes usar una solución de terceros como EasyCron.
Importante: Redes multisitio de WordPress
En una red multisitio, las cosas funcionan de forma ligeramente diferente.
WP-Cron tiene que ejecutarse para cada subsitio por separado, no solo para el sitio principal. Si configuras un único cron en el servidor que apunte a wp-cron.php en el dominio principal, es posible que los cron jobs de los subsitios en otros dominios o subrutas no se ejecuten correctamente.
La solución más limpia es usar WP-CLI, que gestiona el multisitio de forma nativa:
*/15 * * * * cd /path/to/wordpress && wp cron event run --due-now --url=https://yourdomain.com --allow-root >/dev/null 2>&1
Para redes con muchos subsitios, puedes recorrerlos todos con el siguiente comando:
*/15 * * * * cd /path/to/wordpress && wp site list --field=url | xargs -I % wp cron event run --due-now --url=% --allow-root >/dev/null 2>&1
La constante DISABLE_WP_CRON de wp-config.php funciona igual en el modo multisitio: añádela una vez y se aplicará a toda la red.
Paso 2: Desactiva WP-Cron en wp-config.php
Para desactivar WP-Cron, añade lo siguiente a tu archivo wp-config.php, justo antes de la línea que dice «¡Eso es todo, deja de editar! ¡Que disfrutes del blog!».
define('DISABLE_WP_CRON', true);

Guarda el archivo y ya está. WP-Cron ya no se ejecutará al cargar la página.
Esta constante evita que WP-Cron se ejecute al cargar la página. No impide que se llame directamente a wp-cron.php. La tarea cron de tu servidor, configurada en el paso 1, seguirá pudiendo activarlo como es de esperar.
Cómo Comprobar que Todo Funciona
Una vez completados ambos pasos, conviene comprobar que WP-Cron esté realmente desactivado y que el cron de tu servidor se ejecute correctamente.
Opción 1: Usa el plugin WP Crontrol
Instala y activa el plugin gratuito WP Crontrol. Ve a Herramientas → Eventos Cron en tu panel de control de WordPress. Verás una lista de todos los eventos programados. Si WP-Cron está desactivado correctamente, ya no deberías ver eventos que se activan cada vez que se carga una página, sino solo en los intervalos en los que se ejecuta la tarea cron de tu servidor.
Opción 2: Compruébalo a través de WP-CLI
Ejecuta este comando desde tu servidor:
wp cron event list
Aquí se muestran todos los eventos de cron pendientes con la próxima hora de ejecución programada. Si la lista tiene un aspecto normal y los eventos se van eliminando entre una ejecución y otra, tu configuración funciona correctamente.
Opción 3: Comprueba los registros de tu servidor
Si has configurado una entrada en crontab, puedes redirigir temporalmente su salida a un archivo de registro para confirmar que se está ejecutando:
*/15 * * * * wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >> /tmp/wpcron.log 2>&1
Comprueba /tmp/wpcron.log al cabo de 15 minutos para confirmar que la tarea se ha ejecutado. Una vez confirmado, elimina la redirección del registro.
Resumen
Desactivar WP-Cron y sustituirlo por un cron job real a nivel de servidor es un cambio sencillo que mejora la fiabilidad, reduce la sobrecarga y elimina un endpoint público innecesario.
O también puedes saltarte casi toda la configuración eligiendo un proveedor de alojamiento que se encargue de ello por ti. Los proveedores administrados, como Kinsta, ejecutan un cron del lado del servidor cada 15 minutos por defecto, así que solo tienes que desactivar WP-Cron y dejar que la plataforma se encargue del resto.