UA-51298262-10 Skip to main content
WordPress

Desactivar wp-cron y usar un cron real en tu servidor

By septiembre 20, 2026No Comments
Desactivar wp-cron y usar un cron real en tu servidor

Por qué deberías desactivar wp-cron en WordPress

Si llevas un sitio WordPress con tráfico medio o alto, hay una optimización muy efectiva que casi nadie aplica: desactivar wp-cron y sustituirlo por un cron job real del servidor. WP-Cron es el sistema de tareas programadas de WordPress. Publica entradas programadas, comprueba actualizaciones, envía pings, lanza copias de seguridad y ejecuta los hooks de los plugins que tengas instalados.

El problema no es qué hace, sino cómo lo hace. WordPress no tiene un demonio de tareas en segundo plano. En su lugar, wp-cron se dispara cada vez que alguien visita la web: WordPress consulta la tabla wp_options, mira si hay tareas pendientes y, si las hay, las ejecuta en ese momento. Suena inocente. No lo es. Esto tiene tres consecuencias directas:

  • Rendimiento degradado: si wp-cron debe ejecutar algo pesado (una copia de seguridad, por ejemplo), el visitante que la desencadena espera a que termine, o al menos se consume un worker de PHP.
  • Tareas retrasadas: en sitios con poco tráfico, una entrada programada puede publicarse minutos u horas tarde porque nadie visitó la web a la hora prevista.
  • Sobrecarga en sitios con mucho tráfico: con miles de visitas simultáneas, WordPress lanza comprobaciones de cron de forma casi constante, multiplicando consultas a la base de datos y procesos PHP.

La solución estándar —recomendada incluso en el manual de desarrollo de WordPress— es desactivar wp-cron y programarlo mediante el cron del sistema operativo. Ejecución puntual, controlada. Lo que debería haber sido desde el principio.

Paso 1: desactivar wp-cron en wp-config.php

El primer paso es editar el archivo wp-config.php, en la raíz de tu instalación de WordPress. Localiza esta línea:

define( ‘DB_PASSWORD’, ‘tu_contraseña’ );

Justo debajo de las constantes de base de datos (y antes de la línea que dice /* That’s all, stop editing! */), añade:

define( ‘DISABLE_WP_CRON’, true );
Con esta constante, WordPress deja de disparar el cron en cada visita. Ojo: no borra las tareas programadas existentes. Simplemente dejan de ejecutarse hasta que configures el cron real.

Guarda el archivo. A partir de aquí, las tareas programadas ya no se ejecutarán, así que conviene configurar el cron del servidor cuanto antes. Si tardas, se acumularán tareas pendientes y las publicaciones programadas fallarán.

Paso 2: crear el cron job real en el servidor

La configuración depende de tu entorno de hosting. Hay tres escenarios habituales.

Opción A: cPanel

  1. Accede a cPanel y busca la sección Trabajos de Cron (Cron Jobs).
  2. En el campo de intervalo, selecciona Dos veces por hora o define manualmente: */15 * * * * (cada 15 minutos) o * * * * * (cada minuto).
  3. En el campo de comando, introduce la línea que se detalla en el paso 3.

Opción B: VPS o servidor dedicado con Linux

Conéctate por SSH y edita el crontab del usuario que ejecuta tu web (habitualmente www-data en Debian/Ubuntu, o nginx/apache según tu pila):

crontab -u www-data -e

Añade la línea correspondiente (ver paso 3) y guarda. Puedes verificar que quedó registrada con crontab -u www-data -l.

Opción C: hosting gestionado o paneles tipo Plesk

Plesk incluye una sección de Tareas programadas dentro de los ajustes del dominio; funciona igual que cPanel. En hostings gestionados tipo Kinsta, Cloudways o WP Engine, muchos ya ejecutan un cron del servidor propio. Consulta su documentación antes de duplicar la tarea, porque en ese caso no necesitas desactivar wp-cron de forma manual.

Paso 3: el comando del cron job

Tienes dos formas de invocar wp-cron desde el sistema. La recomendada es mediante WP-CLI; la alternativa, vía HTTP.

Con WP-CLI (recomendado)

*/15 * * * * cd /var/www/tusitio/htdocs; wp cron event run –due-now –quiet

Ventajas: no consume ancho de banda HTTP, no depende de que tu servidor web responda, registra mejor los errores y evita problemas si tu web está detrás de Cloudflare o un firewall que bloquea peticiones internas. Ajusta la ruta a la raíz real de tu instalación. Si WP-CLI no está disponible en tu hosting, pide a tu proveedor que lo instale; casi todos los hostings serios lo ofrecen.

Con wget o curl

*/15 * * * * wget -q -O – https://tusitio.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Esta opción simula una visita al archivo wp-cron.php. Funciona en cualquier hosting, pero depende de que la web sea accesible y puede quedarse colgada si el servidor tarda en responder. Por eso el redireccionamiento a /dev/null es importante.

¿Cada cuánto programarlo? Cada 15 minutos es un buen equilibrio para la mayoría de sitios. Si dependes de publicaciones programadas al minuto o de plugins de suscripción con recordatorios puntuales, usa * * * * * (cada minuto). Ejecutar wp-cron cada minuto es seguro: si no hay tareas pendientes, termina en milisegundos.

Comprobación y verificación tras desactivar wp-cron

  • Instala el plugin WP Crontrol: te muestra todas las tareas programadas, su próxima ejecución y permite lanzarlas manualmente para probar el sistema.
  • Prueba una publicación programada: crea una entrada, prográmala 5 minutos en el futuro y comprueba que se publica sola.
  • Revisa los logs del cron: en un VPS, puedes redirigir la salida del cron a un log añadiendo >> /var/log/wp-cron.log 2>&1 al comando, temporalmente.
  • Comprueba tareas rezagadas: en WP Crontrol, si ves muchas tareas con fecha pasada en la columna de próxima ejecución, tu cron no está corriendo o el intervalo es demasiado amplio.

Errores frecuentes

  • La entrada programada no se publica: revisa que DISABLE_WP_CRON esté antes del require de wp-settings.php y que el cron job use la ruta correcta de WordPress.
  • Error de permisos en WP-CLI: asegúrate de ejecutar el cron con el mismo usuario propietario de los archivos de WordPress.
  • Cron duplicado: si tu hosting ya ejecuta su propio cron del sistema sobre wp-cron.php, desactivar DISABLE_WP_CRON y añadir otro puede provocar ejecuciones simultáneas. Deja solo uno.

Conclusión: un cron real, mejor rendimiento

Desactivar wp-cron y sustituirlo por un cron job del servidor es de esas optimizaciones de bajo riesgo y alto impacto que todo administrador de WordPress debería aplicar. El proceso se reduce a tres pasos: añadir DISABLE_WP_CRON en wp-config.php, programar un cron cada 15 minutos (o cada minuto si lo necesitas) y verificar el funcionamiento con WP Crontrol. El resultado: un sitio más rápido para tus visitantes, tareas que se ejecutan puntualmente y menos carga sobre la base de datos y PHP.

¿Dudas con tu crontab? ¿Tu hosting no ofrece acceso a cron, o prefieres que un profesional revise la instalación? En RedServicio (redservicio.net) encontrarás ayuda técnica especializada en WordPress y administración de servidores para dejarlo funcionando perfectamente.