Imagina que entras al panel de administración de tu sitio web, listo para trabajar, y te encuentras con una notificación crítica en la herramienta de Salud del Sitio. El mensaje es técnico y preocupante: «A scheduled event has failed WordPress» o, en su versión en español, «Un evento programado ha fallado». Aunque tu web parezca funcionar correctamente por fuera, este error es el equivalente digital a que el motor de tu coche deje de recibir aceite: tarde o temprano, las cosas se romperán.
En mi experiencia como desarrollador Senior de WordPress y especialista en PHP, he visto cómo este error silencioso puede detener tiendas online, impedir copias de seguridad y frustrar estrategias de contenido al no publicar posts programados. No es solo una molestia; es un fallo en el corazón del sistema de automatización de WordPress.
En este artículo exhaustivo, desglosaremos qué significa este error, por qué ocurre (especialmente en entornos modernos como LEMP y tras cambios de DNS) y, lo más importante, cómo solucionarlo paso a paso para asegurar la salud técnica de tu negocio online.
¿Qué significa realmente «Un evento programado ha fallado»?
WordPress no es solo una herramienta para publicar contenido; es un sistema complejo que realiza tareas de mantenimiento en segundo plano. Estas tareas incluyen:
- Publicar entradas programadas.
- Buscar actualizaciones de plugins y del núcleo.
- Enviar correos electrónicos transaccionales.
- Renovar cachés y optimizar bases de datos.
Para gestionar esto, WordPress utiliza un sistema llamado WP-Cron. A diferencia de un cron real de servidor (que se ejecuta por reloj), WP-Cron se «dispara» cada vez que alguien visita tu web. Si ves el error «A scheduled event has failed WordPress», significa que el sistema intentó ejecutar una tarea y no pudo completarla.
Identificación del mensaje técnico específico
Aunque la interfaz en español te dirá «Un evento programado ha fallado», si profundizas en los logs o en la depuración, a menudo encontrarás un mensaje mucho más específico. Según reportes técnicos en los foros de soporte, el error se manifiesta frecuentemente en la herramienta de «Salud del sitio» (Health Check) con el mensaje exacto:
Puedes leer más sobre la identificación de este mensaje específico en el hilo de soporte oficial de WordPress.org sobre Health Check.
action_scheduler_run_queue es vital para sitios que usan WooCommerce, ya que esta librería gestiona casi todas las tareas de fondo de una tienda online.El impacto silencioso en tu sitio web
Lo peligroso de este error es su invisibilidad inicial. A diferencia de un «Error 500» o una «Pantalla Blanca de la Muerte», tu sitio sigue visible para los visitantes. Sin embargo, el impacto funcional en la administración es severo.
Basándonos en la documentación técnica, aunque el sitio web sigue funcionando de cara al usuario, este fallo indica que tareas automatizadas críticas no se están ejecutando. Esto incluye la programación de publicaciones (scheduling posts), la renovación de suscripciones en plugins de membresía o las actualizaciones automáticas de seguridad.
Causas comunes: Entornos de Servidor y DNS
En mi trayectoria optimizando sitios para clientes, he notado que este error no aparece aleatoriamente. Suele estar vinculado a configuraciones de servidor específicas o cambios recientes en la infraestructura de la red.
1. El entorno del servidor (Stack LEMP)
No todos los servidores son iguales. El problema ha sido reportado con mayor frecuencia en entornos de servidor LEMP (Linux, Nginx, MySQL, PHP), especialmente aquellos corriendo sobre sistemas operativos modernos como Ubuntu 20.04.
Esto sugiere que la configuración de Nginx, a menudo más estricta o compleja que la de Apache, puede estar bloqueando las solicitudes de «loopback». WP-Cron necesita que el servidor pueda «llamarse a sí mismo» (hacer una petición HTTP a su propio dominio) para activar las tareas. Si Nginx o el firewall del servidor bloquean esta auto-petición, el evento falla.
2. Correlación con Cloudflare y DNS
Si recientemente has migrado tu DNS o activado un CDN, esta podría ser la causa. Se ha identificado que el cambio de los servidores de nombres (nameservers) hacia Cloudflare puede ser un detonante directo para que aparezca la advertencia de «Scheduled failed event».
Esto ocurre porque el servidor intenta contactar con tu dominio, pero la resolución DNS apunta a la IP de Cloudflare en lugar de a la IP local del servidor (127.0.0.1). Cloudflare, al ver una petición extraña, puede bloquearla o simplemente la petición se pierde en el enrutamiento.
Para más detalles sobre esta correlación, puedes consultar la Comunidad de Cloudflare sobre eventos programados fallidos.
Solución Paso a Paso: Cómo arreglar el error definitivamente
A continuación, presento las soluciones que aplico en mis propios desarrollos, ordenadas de la más sencilla a la más técnica y robusta.
Solución 1: Instalar un plugin de control de Cron (Diagnóstico)
Antes de tocar código, necesitamos ver qué está pasando. Recomiendo instalar un plugin como WP Crontrol.
Una vez instalado, ve a Herramientas > Eventos Cron. Aquí verás una lista de todas las tareas. Si ves muchas tareas en rojo o con el mensaje «Missed Schedule» (Programación perdida), confirmamos que el sistema de cron está atascado.
Solución 2: La Solución Definitiva (Desactivar WP-Cron y usar Cron del Sistema)
Esta es, en mi experiencia, la mejor solución no solo para arreglar el error «A scheduled event has failed WordPress», sino para mejorar el rendimiento general de tu web. Vamos a desactivar el cron nativo de WordPress (que depende de las visitas) y usaremos el reloj interno del servidor.
Paso A: Editar wp-config.php
Accede a los archivos de tu sitio vía FTP o Administrador de Archivos y edita el archivo wp-config.php. Añade la siguiente línea antes de donde dice «That’s all, stop editing»:
Paso B: Configurar el Cron en el Hosting (cPanel o Terminal)
Ahora debemos decirle al servidor que ejecute el script de cron cada 5 o 10 minutos. Si usas cPanel, busca «Trabajos de Cron» (Cron Jobs).
Añade el siguiente comando para que se ejecute cada 5 minutos:
(Recuerda cambiar «tudominio.com» por tu URL real).
Al hacer esto, eliminas la dependencia de las visitas y garantizas que las tareas se ejecuten puntualmente, solucionando el error de raíz en el 99% de los casos.
Solución 3: Ajustes para usuarios de Cloudflare y Nginx
Si la solución del cron real no es posible o prefieres no tocar configuraciones del servidor, y usas Cloudflare, debes asegurarte de que tu servidor pueda resolver su propia dirección IP correctamente.
En servidores Linux (especialmente en el stack LEMP mencionado anteriormente), esto a menudo se soluciona editando el archivo /etc/hosts en el servidor para apuntar tu dominio a la IP local (127.0.0.1). Esto evita que la solicitud salga a internet (y pase por Cloudflare) solo para volver a entrar.
Vinculación con el error «Missed Schedule»
Es muy común que el error «A scheduled event has failed» venga acompañado de entradas que no se publican cuando deberían. En la comunidad de WordPress, esto se conoce como el «Missed Schedule Error».
Las causas son idénticas: el cron no se dispara. Si tu principal síntoma es que los posts programados fallan, la solución sugerida para este fallo de evento programado implica revisar las guías específicas sobre cómo arreglar este problema.
Existen recursos excelentes que detallan esto, por ejemplo, puedes consultar la documentación sobre cómo arreglar el error de programación perdida en WordPress proporcionada por UpdraftPlus. Aunque se centran en copias de seguridad, la lógica técnica del fallo del cron es la misma.
Depurando el error «action_scheduler_run_queue»
Como mencionamos al principio, una variante muy común de este error en la Salud del Sitio es: «The scheduled event, action_scheduler_run_queue, failed to run».
Este evento pertenece a una librería llamada Action Scheduler, utilizada por plugins modernos como WooCommerce, WPForms y MailPoet para gestionar colas de tareas grandes. Si este evento falla, tus correos de pedidos podrían no enviarse.
Si has aplicado la Solución 2 (Cron del Sistema) y este error persiste, prueba lo siguiente:
- Instala el plugin WP Crontrol.
- Busca el evento
action_scheduler_run_queue. - Elimina el evento (Delete).
- Desactiva y vuelve a activar el plugin que depende de él (por ejemplo, WooCommerce). Esto forzará la regeneración del evento programado limpio.
Conclusión y Mejores Prácticas
El mensaje «A scheduled event has failed WordPress» o «Un evento programado ha fallado» es una advertencia que no debes ignorar. Aunque tu sitio parezca estar bien, la acumulación de tareas fallidas degradará el rendimiento de tu base de datos y afectará la funcionalidad de tu negocio a largo plazo.
En mi experiencia optimizando sitios de alto tráfico, la transición hacia un Cron de Sistema real (Solución 2) es la práctica estándar que todo sitio WordPress serio debería implementar. No solo soluciona este error, sino que libera recursos de PHP en cada visita de usuario, haciendo tu web más rápida.
Recuerda verificar siempre tu entorno de servidor. Si estás en un stack LEMP o usas Cloudflare, la comunicación interna de tu servidor (loopback) es el primer sospechoso habitual.
Mantener la «Salud del Sitio» en verde no es solo vanidad; es garantía de que tu herramienta de trabajo está lista para generar ingresos sin interrupciones técnicas.
¿Necesitas ayuda con esto?
Diseñamos webs pensadas para convertir visitas en clientes, no solo para verse bien. Descubre nuestro servicio de diseño web estratégico.
