Programación perdida en WordPress: por qué pasa y cómo solucionarla de verdad

En WordPress, la función de programar entradas (y cualquier tarea programada) es básica para casi cualquier proyecto serio: blogs con calendario editorial, tiendas que actualizan precios en una fecha concreta, webs que lanzan campañas a una hora exacta, etc.

El problema llega cuando aparece el temido mensaje de “programación perdida” (missed schedule): el post no se publica a la hora indicada, o directamente nunca llega a publicarse. Y si dependes de esa publicación a tiempo, puede ser un auténtico desastre.

La buena noticia es que este error suele tener causas claras y, sobre todo, solución. Vamos a ver por qué ocurre y cómo arreglarlo, tanto con cambios manuales como con plugins, para que no vuelva a pillarte por sorpresa.


1. Por qué ocurre el error de programación perdida en WordPress

Detrás de casi todas las tareas programadas de WordPress está WP-Cron, un sistema interno que se encarga de:

  • Publicar entradas programadas.
  • Lanzar backups creados por plugins.
  • Limpiar archivos temporales.
  • Comprobar actualizaciones de núcleo, temas y plugins.
  • Ejecutar cualquier tarea que un plugin o el propio WordPress deje “en agenda”.

A diferencia de un cron real del servidor, WP-Cron no se ejecuta en segundo plano de forma continua. Solo se dispara cuando alguien visita la web (frontal o área de administración). Si no hay visitas, no hay WP-Cron… y por tanto, no hay tareas programadas ejecutadas.

Sobre ese comportamiento se suman varios factores típicos que acaban en el error de “programación perdida”.

1.1. Zona horaria mal configurada

Es uno de los fallos más frecuentes y más tontos:

  • El administrador programa una entrada a las 10:00,
  • pero el sitio está configurado en UTC u otra zona horaria distinta a la real.

Resultado: la hora interna de WordPress no coincide con la que tú crees y la publicación se retrasa, se adelanta o directamente se marca como “perdida”.

1.2. Cambios tras migraciones o actualizaciones masivas

Después de:

  • migrar la web a otro servidor,
  • cambiar de dominio,
  • clonar entornos,
  • o actualizar muchos plugins/temas de golpe,

es relativamente habitual que:

  • algunos plugins que usan tareas programadas entren en conflicto,
  • rutas internas cambien,
  • o WP-Cron deje de ejecutarse como antes.

Si antes funcionaba todo bien y tras una migración o un “gran cambio” deja de hacerlo, esta es una pista clara.

1.3. Memoria PHP insuficiente

WordPress y sus plugins necesitan memoria PHP para ejecutar sus procesos. Si el límite de memoria es bajo y el sitio está cargado de funcionalidades:

  • se agotan los recursos,
  • algunas tareas no llegan a ejecutarse,
  • y entre las primeras víctimas suelen estar las tareas cron, que se quedan a medias.

1.4. Caché excesivamente agresiva

La caché (ya sea a nivel de plugin, servidor o CDN como Cloudflare) puede interferir con WP-Cron, especialmente cuando:

  • la página principal o el wp-cron.php quedan “congelados” en caché,
  • y apenas hay tráfico o visitas nuevas que renueven esa caché.

Si nadie “despierta” WP-Cron visitando el sitio, las tareas programadas se acumulan sin ejecutarse.

1.5. Limitaciones del propio WP-Cron

WP-Cron no es un cron de sistema real:

  • Depende de visitas.
  • Puede verse bloqueado por reglas de seguridad, firewalls o configuraciones del servidor.
  • Algunos hosting desactivan o limitan su ejecución automática para ahorrar recursos.

Por eso, en sitios con tráfico bajo o con muchas capas de caché, WP-Cron puede ser poco fiable si no se refuerza.


2. Cómo solucionar el error de programación perdida en WordPress (sin plugin)

Antes de instalar nada, merece la pena revisar los puntos básicos.

2.1. Revisa la zona horaria de WordPress

Ve a:

Ajustes → Generales → Zona horaria

Recomendaciones:

  • No dejes UTC por defecto salvo que sea lo que realmente quieres.
  • Selecciona una ciudad concreta de tu zona horaria (por ejemplo, Madrid), no solo un desfase tipo UTC+1.
  • Así, WordPress ajustará automáticamente los cambios de horario de verano/invierno.

Después de cambiarlo, prueba a programar una entrada de test unos minutos en el futuro y comprueba si se publica a tiempo.


2.2. Fuerza WP-Cron desde el navegador

Para comprobar si WP-Cron se ejecuta correctamente, puedes llamar manualmente al script:

https://tudominio.com/wp-cron.php?setcronjob
Lenguaje del código: JavaScript (javascript)
  • Sustituye tudominio.com por el dominio real.
  • Hazlo mientras estás logueado como administrador.

Si al ejecutar esta URL se “desatascan” tareas pendientes (entradas que pasan de “programadas” a “publicadas”), sabrás que WP-Cron funciona, pero no se estaba invocando automáticamente.


2.3. Aumenta el límite de memoria PHP

Si el servidor va justo de recursos, es buena idea subir la memoria disponible para WordPress.

En el archivo wp-config.php (en la raíz de la instalación de WordPress), añade o ajusta:

define( 'WP_MEMORY_LIMIT', '768M' );
Lenguaje del código: JavaScript (javascript)

O el valor que tenga sentido para tu hosting (512M, 256M, etc., según plan y necesidades).

En muchos paneles de hosting también puedes ajustar la memoria PHP desde la sección de Configuración de PHP.


2.4. Revisa la configuración de la caché

Si utilizas:

  • plugins de caché (WP Rocket, Flyinpress, W3TC, LiteSpeed Cache, etc.),
  • caché a nivel de servidor,
  • o un CDN como Cloudflare,

revisa estos puntos:

  1. Excluye wp-cron.php de la caché (si tu sistema lo permite).
  2. Programa vaciados de caché periódicos, especialmente en sitios con poco tráfico.
  3. Evita configuraciones de caché excesivamente agresivas que bloqueen todas las peticiones dinámicas.

La idea es asegurarte de que:

  • tanto el frontal como el backend pueden “despertar” WP-Cron,
  • y que el archivo wp-cron.php puede ejecutarse sin quedarse atrapado en caché.

2.5. Usar el cron alternativo de WordPress

WordPress incluye un cron alternativo que a veces funciona mejor en entornos problemáticos.

En wp-config.php:

define( 'DISABLE_WP_CRON', true );
define( 'ALTERNATE_WP_CRON', true );
Lenguaje del código: JavaScript (javascript)

Con esto:

  • se desactiva el cron “normal” de WordPress,
  • y se activa el alternativo, que añade ciertos parámetros a la URL cuando debe ejecutar tareas.

No es la solución perfecta (ensucia un poco las URLs en los disparos de cron), pero puede sacarte del apuro cuando no tienes acceso completo al servidor.


2.6. Crear un cron real en el hosting

La solución más robusta para sitios serios es desactivar WP-Cron automático y sustituirlo por un cron real de servidor.

Paso 1: Desactivar WP-Cron interno

En wp-config.php, asegúrate de tener:

define( 'DISABLE_WP_CRON', true );
Lenguaje del código: JavaScript (javascript)

Paso 2: Crear la tarea cron en el panel del hosting

En el panel de control del servidor (cPanel, Plesk, panel propio del proveedor, etc.):

  1. Ve a Tareas cron / Cron Jobs.
  2. Crea una nueva tarea que se ejecute cada X minutos (por ejemplo, cada 5 o cada 10).
  3. Usa un comando similar a:
wget -q -O - https://tudominio.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Lenguaje del código: JavaScript (javascript)

O bien:

curl -s https://tudominio.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Lenguaje del código: JavaScript (javascript)

Con esto:

  • No dependerás de las visitas para ejecutar tareas programadas.
  • WP-Cron se invocará de forma real y regular desde el servidor.

2.7. Cron real con WP-CLI (para usuarios avanzados)

Si tienes acceso SSH y WP-CLI instalado, puedes gestionar las tareas cron con comandos de consola.

Ejemplo típico de entrada cron en el servidor:

*/10 * * * * cd /ruta/a/tu/web; wp cron event run --due-now > /dev/null 2>&1
Lenguaje del código: JavaScript (javascript)
  • */10 → ejecuta cada 10 minutos (ajústalo a tus necesidades).
  • Cambia /ruta/a/tu/web por la ruta real del sitio.

Este enfoque es ideal en entornos profesionales o multi-sitio donde se quiere control fino sobre las tareas.


3. Solucionar la programación perdida en WordPress con plugins

Si prefieres evitar tocar archivos o cron del servidor, hay varios plugins diseñados específicamente para gestionar tareas programadas que no se ejecutan.

3.1. Scheduled Post Trigger

  • Muy sencillo: se instala, se activa y empieza a comprobar si hay publicaciones programadas que no se han ejecutado.
  • Cada vez que alguien entra al sitio o al admin, el plugin revisa tareas pendientes y fuerza su ejecución.

Eso sí:

  • Sigue siendo importante que la zona horaria esté correcta.
  • Si el problema es una caché muy agresiva, conviene corregir eso también.

3.2. Missed Scheduled Posts Publisher

  • Comprueba cada 15 minutos si hay publicaciones programadas que no se han ejecutado.
  • No depende tanto del tráfico como otros enfoques.
  • No requiere configuración: instalar y listo.

Es una solución práctica para webs pequeñas o medianas donde no se quiere tocar cron del servidor.

3.3. WP Missed Schedule

Disponible en GitHub, está pensado para:

  • Detectar posts que han fallado en su programación,
  • y reintentar su publicación automáticamente.

Permite ver qué tareas se han “perdido”, lo que ayuda a diagnosticar patrones de fallo.


4. Conclusión: checklist para no volver a perder publicaciones programadas

El error de programación perdida en WordPress no es un fallo misterioso del CMS, sino la suma de:

  • zona horaria incorrecta,
  • limitaciones de WP-Cron,
  • recursos escasos,
  • caché mal configurada,
  • o migraciones/actualizaciones que cambian el entorno.

Para dejarlo resuelto de forma sólida, puedes seguir este checklist:

  1. ✅ Ajustar correctamente la zona horaria en Ajustes → Generales.
  2. ✅ Aumentar la memoria PHP si el sitio va justo de recursos.
  3. ✅ Revisar la caché (plugin, servidor, CDN) y evitar que bloquee wp-cron.php.
  4. ✅ Probar el cron alternativo si el entorno es limitado.
  5. ✅ En proyectos serios o con mucho en juego, configurar siempre un cron real del servidor y desactivar WP-Cron automático.
  6. ✅ Como apoyo, usar plugins como Scheduled Post Trigger o Missed Scheduled Posts Publisher si no se quiere tocar servidor.

Con estas medidas, programar entradas en WordPress volverá a ser lo que debería: una función fiable en la que puedes confiar para tu calendario editorial, cambios de precio, campañas o automatizaciones.

vía: webempresa

Editor WPDirecto

Editor de WPDirecto potenciado con IA con el apoyo del equipo de edición.

Te puede interesar...

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    WordPress Directo
    WPDirecto.com es una revista especializada en WordPress y WooCommerce que ofrece una amplia gama de recursos, incluyendo tutoriales, análisis de plugins y plantillas, consejos de optimización y estrategias de SEO, para ayudar a los usuarios a mejorar y personalizar sus sitios web, manteniéndolos informados sobre las últimas novedades y tendencias en el mundo de WordPress.

    © 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.