Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🔧 Cómo solucionar el error de programación perdida en WordPress: 3 métodos que funcionan

🔧 Cómo solucionar el error de programación perdida en WordPress: 3 métodos que funcionan

Usted pone la alarma a las ocho de la mañana porque un post importante se publica el lunes. Lo preparó durante el fin de semana, lo programó en el panel de administración de WordPress y se fue a dormir sin preocupaciones. Llega el martes, abre el sitio y no hay nada. Junto al título en el panel de administración ve: «Missed schedule».

¿Le suena familiar? Solo en el último año, los foros de soporte de WordPress en ruso discutieron este problema más de trescientas veces. El fallo no está en su panel de administración, ni en su hosting, ni en sus plugins. Es una peculiaridad arquitectónica del propio WordPress.

A continuación, tres maneras de resolverlo de una vez por todas, de la más rápida a la más fiable. Sin invocaciones cron, sin ediciones a ciegas en wp-config.php y sin el parche de «pues publico manualmente».

💡 Resumen rápido:

  • Instale Missed Schedule Post Publisher para la publicación automática de posts perdidos (dos minutos de configuración)
  • Sustituya WP-Cron por el cron del servidor para una solución radical independiente del tráfico
  • Instale WP Crontrol para una supervisión manual (muestra todos los eventos cron y permite ejecutar cualquiera de ellos manualmente)

Por qué WordPress pierde las publicaciones programadas

WordPress no usa un cron real del sistema. En su lugar, depende de un mecanismo llamado WP-Cron, un pseudocron que se activa no por un temporizador del servidor, sino cuando un visitante llega al sitio.

Funciona así. Cuando usted programa un post para las 09:00, WordPress escribe la tarea en la base de datos. Pero solo puede ejecutar esa tarea si alguien visita el sitio alrededor de las 09:00. Llega un visitante, WordPress revisa la lista de tareas y publica el post. Si no hay visitante, la tarea se queda colgada y usted ve el mensaje «Missed schedule».

Para sitios con entre 500 y 1.000 visitantes diarios, WP-Cron funciona de forma aceptable: es casi seguro que alguien hará clic en el momento justo. Pero si tiene un blog joven, un proyecto de nicho o publica posts de noche (en su zona horaria), WP-Cron falla con regularidad. Súmele los plugins de caché: WP Rocket, W3 Total Cache o Cloudflare pueden servir páginas en caché sin invocar WordPress en absoluto, por lo que las tareas cron no se ejecutan durante horas.

Por eso el error «Missed schedule» es sistémico, no aleatorio. La solución no es reprogramar el post manualmente, sino uno de los tres enfoques siguientes.

Los tres métodos abordan escenarios diferentes. El primero, instalar un plugin ligero de autopublicación, resuelve el problema a la gran mayoría de los usuarios en dos minutos. El segundo, cambiar al cron del servidor, proporciona fiabilidad a nivel de infraestructura independientemente del tráfico. El tercero, un panel de control manual, es útil para quienes quieren ver cada tarea cron por su nombre y ejecutarla manualmente. Puede empezar con el primero y añadir el tercero más adelante para una total tranquilidad.

Trabajando en el contenido de un sitio web con un portátil

Método 1: el plugin Missed Schedule Post Publisher, simple y fiable

La forma más rápida de cerrar este problema es instalar un plugin especializado. Históricamente se usaba WP Missed Schedule, pero se eliminó del directorio de WordPress.org en 2017 y la versión de GitHub contenía una puerta trasera. No lo instale bajo ninguna circunstancia.

El sustituto actual es Missed Schedule Post Publisher. Este plugin tiene un único propósito: comprobar si un post programado está atascado y publicarlo en el momento en que se detecta.

En qué se diferencia de su desaparecido predecesor:

  • Funciona mediante WP-Cron y simultáneamente mediante visitas de usuarios; si el hosting desactiva WP-Cron, el plugin cambia automáticamente

  • Intervalo de comprobación configurable: 5, 10, 15, 20, 30 o 60 minutos

  • Impacto cero en el rendimiento (una consulta ligera a la base de datos)

  • Compatible con WP Rocket, W3 Total Cache y Cloudflare

  • No crea una avalancha de eventos cron adicionales; solo comprueba las publicaciones perdidas

La instalación es la estándar: Plugins → Añadir nuevo → busque «Missed Schedule Post Publisher» → Instalar → Activar. Tras la activación, vaya a Ajustes → Missed Schedule Post Publisher y elija su intervalo de comprobación. Para la mayoría de los sitios, lo óptimo es entre 10 y 15 minutos.

El plugin no requiere supervisión manual. Instálelo, configure el intervalo y compruebe el resultado al cabo de un día: vaya a Entradas → Todas las entradas y confirme que la etiqueta «Missed schedule» ha desaparecido. A partir de entonces funciona de forma silenciosa y fiable.

A modo de comparación, el antiguo WP Missed Schedule (eliminado del directorio de WordPress.org en 2017, y la versión de GitHub contenía una puerta trasera) tenía este aspecto en el panel de administración. Si por casualidad ve este plugin en su lista de instalados, elimínelo inmediatamente y sustitúyalo por Missed Schedule Post Publisher.

Plugin obsoleto WP Missed Schedule en la lista de plugins instalados de WordPress

Método 2: cron del servidor en lugar de WP-Cron, una solución radical

Este método es más técnico pero ofrece una fiabilidad del 100 por ciento: se desactiva WP-Cron y se vincula la llamada a wp-cron.php al cron del sistema del servidor.

El cron del sistema se ejecuta según la programación del sistema operativo, independientemente del tráfico del sitio. Si configura un intervalo de 5 minutos, la tarea se ejecuta exactamente en 5 minutos, incluso si el sitio tiene cero visitantes.

Lo que debe hacer:

  • Abra wp-config.php y añada la siguiente línea antes de /* That's all, stop editing! */:
1define('DISABLE_WP_CRON', true);

Esto evita que WordPress ejecute tareas cron con las visitas de los usuarios. Las tareas en sí no desaparecen; permanecen en la base de datos y esperan una llamada externa.

  • En el panel de su hosting, busque la sección «Cron Jobs» (cPanel → Cron Jobs, ISPmanager → Programador, o equivalente). Cree una tarea con un intervalo de 5 a 10 minutos y este comando:
1wget -q -O - https://your-site.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Si el servidor soporta PHP CLI, aquí tiene una alternativa más rápida que no carga el servidor web:

1php /home/username/public_html/wp-cron.php
  • Guarde la tarea. Después de 10 minutos, compruebe los registros de cron; si no hay errores, el sistema está funcionando.

Extra: desactivar WP-Cron mediante DISABLE_WP_CRON elimina el retardo parásito durante la carga de páginas para los visitantes. WordPress ya no activa tareas cron durante la navegación normal, por lo que las páginas se abren un poco más rápido.

Este método tiene una desventaja: el acceso a la configuración de cron no está disponible en todos los hostings. Los hostings compartidos baratos a veces bloquean la creación de tareas cron. En ese caso, recurra al método 1; Missed Schedule Post Publisher se diseñó precisamente para esas limitaciones y funciona sin el cron del sistema.

Método 3: inspección manual mediante WP Crontrol, control total

El tercer método es para quienes quieren ver todo lo que sucede bajo el capó. WP Crontrol es un gestor de eventos cron directamente en el panel de administración. No publica posts por sí solo, pero muestra qué tareas están programadas, cuándo debían ejecutarse y qué falló.

Lo que ofrece WP Crontrol:

  • Una lista completa de todos los eventos cron con hook, argumentos y hora de la próxima ejecución

  • La posibilidad de ejecutar cualquier evento inmediatamente con un solo clic

  • Edición y eliminación de eventos cron

  • Adición de nuevos eventos y programaciones personalizadas

  • Un aviso si el sistema cron no funciona (el servidor no puede conectarse a sí mismo)

Tras la instalación, vaya a Herramientas → Eventos Cron. Verá una tabla con todas las tareas. Si un post está «atascado», busque el evento con el hook publish_future_post, haga clic en «Ejecutar ahora» y el post aparecerá en el feed en un segundo.

WP Crontrol es especialmente útil para la depuración: puede ver si un plugin ha creado cientos de eventos cron adicionales (sucede), si la cola de tareas está obstruida o si hay un conflicto entre plugins. La columna «Próxima ejecución» muestra cuándo debe ejecutarse el evento a continuación; si la fecha está en el pasado, la tarea está atascada. La columna «Recurrencia» indica con qué frecuencia se repite el evento; las repeticiones inusualmente frecuentes (cada minuto) casi siempre apuntan a un plugin problemático.

Por sí solo, sin embargo, WP Crontrol no previene el error «Missed schedule»; solo ayuda a diagnosticar y cerrar manualmente las consecuencias. Después de ejecutar manualmente una publicación atascada, el post se publica al instante, pero la situación se repetirá la próxima vez a menos que aborde la causa a nivel del método 1 o 2.

Panel de gestión de eventos cron de WordPress en el plugin WP Crontrol

La mejor combinación: método 1 (plugin de autopublicación) + método 3 (WP Crontrol para supervisión). El autopublicador se encarga de los posts perdidos y WP Crontrol le permite verificar de un vistazo que la cola de cron está limpia y todo funciona con normalidad.

⁉️🤔 Preguntas frecuentes

¿Por qué WordPress no usa un cron normal como cualquier otro sistema normal?

Los desarrolladores de WordPress eligieron deliberadamente el modelo de pseudocron porque no requiere configuración del lado del servidor. Un usuario instala WordPress en cualquier hosting y la publicación programada funciona desde el primer momento sin SSH ni ediciones de configuración. El precio de esa comodidad es la falta de fiabilidad en sitios con poco tráfico. WP-Cron se ejecuta en cada solicitud al sitio, y si no hay solicitudes en el momento adecuado, la tarea no se ejecuta. Es una decisión de compromiso arquitectónico, y para publicaciones con hora crítica no es suficiente.

¿Qué método debo elegir si no entiendo de servidores?

Missed Schedule Post Publisher (método 1). La instalación lleva dos minutos a través del panel de administración; la configuración consiste en seleccionar un intervalo de un menú desplegable. Sin código, sin SSH, sin ediciones en wp-config.php. El plugin detecta por sí mismo si WP-Cron está habilitado en el servidor y se adapta.

¿Podría el error estar relacionado con la zona horaria de WordPress?

Sí, y compruebe esto primero. Vaya a Ajustes → Generales → Zona horaria y asegúrese de haber seleccionado la zona horaria correcta de ciudad en lugar de un desfase UTC manual. Un desfase UTC+X no tiene en cuenta el horario de verano; dos veces al año la programación «se desfasa» una hora y los posts se publican a horas inesperadas.

¿Afecta la caché a los posts perdidos?

Directamente, sí. Los plugins de caché (WP Rocket, W3 Total Cache, WP Super Cache) y las CDN (Cloudflare) pueden servir a los visitantes una página HTML terminada sin lanzar el núcleo PHP de WordPress en absoluto. Si no se llama a WP-Cron, las tareas no se ejecutan. Missed Schedule Post Publisher (método 1) evita este problema funcionando tanto mediante cron como mediante visitas de usuarios que eluden la caché. El cron del servidor (método 2) no se ve afectado por la caché en absoluto.

¿Qué debo hacer si mi hosting bloquea la posibilidad de crear tareas cron?

Use el método 1: Missed Schedule Post Publisher. Se diseñó exactamente para esta situación; funciona mediante el WP-Cron integrado y, si este está desactivado, cambia automáticamente a la comprobación mediante visitas de usuarios. No pierde funcionalidad; la comprobación simplemente se realiza con algo menos de frecuencia (en las visitas en lugar de estrictamente por temporizador).

Qué instalar hoy

El problema de «Missed schedule» no se arregla reprogramando manualmente; eso es como pintar una grieta en una tubería. Necesita o bien un plugin de autopublicación (dos minutos y se olvida) o bien el cron del servidor (un poco más de tiempo y se olvida para siempre).

Si tiene un blog típico o un sitio corporativo en un hosting medio, empiece con Missed Schedule Post Publisher. Configure un intervalo de 10 minutos, cinco clics en el panel de administración y el problema está resuelto. Si quiere garantías a nivel de infraestructura, configure el cron del sistema. Añada WP Crontrol para la supervisión y solo recordará los posts perdidos en conversaciones sobre «cómo eran las cosas antes».

Un día después de la instalación, entre en el panel de administración y compruebe la publicación programada más cercana. Si se publicó a tiempo, el sistema funciona. Si no, abra WP Crontrol y vea si la tarea publish_future_post está colgada sin ejecutarse; eso apunta a un problema de cron más profundo en el servidor, que el método 2 resolverá.