WordPress24/09/2026Redação de Tecnologia e Desenvolvimento6 min de lecturaActualizado el 26/09/2026

La entrada programada no se publicó en WordPress: cómo diagnosticar WP-Cron y el cron del servidor

Un flujo seguro para separar errores de zona horaria, eventos ausentes, fallos de loopback, WP-Cron desactivado, cron externo roto y errores de ejecución.

Notebook com painel de agendamento do WordPress ao lado de ícones de calendário, relógio e engrenagem conectados a servidores.

Cuando una entrada programada no se publica a la hora esperada, el fallo puede estar en cuatro capas distintas: la hora guardada por WordPress, el evento de publicación programado, el mecanismo que activa WP-Cron o la ejecución del propio callback. Separar estas capas evita soluciones al azar, como cambiar la zona horaria, instalar otro plugin de cron o desactivar WP-Cron antes de confirmar la causa.

Qué ocurre cuando se programa una entrada

WordPress usa WP-Cron para tareas basadas en tiempo, incluida la publicación de entradas programadas. La documentación oficial explica que WP-Cron revisa las tareas pendientes cuando el sitio recibe cargas de página, en lugar de funcionar de forma continua como un servicio del sistema operativo. Por eso, un sitio con poco tráfico puede ejecutar una tarea después de la hora prevista. Consulta la documentación de WP-Cron.

Cuando una entrada tiene estado futuro, el núcleo de WordPress programa el hook publish_future_post. En el momento de la ejecución, WordPress confirma que la entrada todavía tiene estado future y la publica. Este comportamiento está documentado en check_and_publish_future_post().

1. Confirma primero la zona horaria y la hora realmente guardada

Antes de culpar al cron, abre Ajustes > Generales y revisa la zona horaria del sitio. Esta configuración controla cómo WordPress calcula y muestra fechas y horas. Después de guardar, la pantalla muestra UTC y hora local, lo que ayuda a detectar un desfase accidental. Consulta la documentación de Ajustes Generales.

  • Confirma que la entrada siga programada y que la fecha mostrada sea la deseada.
  • Compara la hora local que muestra WordPress con la hora esperada por el editor.
  • Si la hora guardada es incorrecta, corrige la programación antes de cambiar el cron.

Un error de zona horaria puede hacer que una entrada parezca retrasada aunque el evento se haya programado para otro instante. Si fecha, hora y estado son correctos, continúa con el mecanismo de ejecución.

2. Revisa Salud del sitio y los loopbacks

Abre Herramientas > Salud del sitio. WordPress informa cuando el sitio no puede completar una solicitud loopback. Los loopbacks son peticiones que WordPress hace a su propio sitio y se usan para iniciar eventos programados. La documentación oficial sobre loopbacks menciona expresamente las entradas programadas entre los casos afectados.

Si falla el loopback, investiga primero conflictos de plugins o tema y después reglas del servidor, firewall, DNS, SSL o autenticación HTTP. En producción, es preferible reproducir el problema en staging o usar una ventana de mantenimiento antes de desactivar componentes.

3. Averigua si WP-Cron fue desactivado

Busca en wp-config.php la constante DISABLE_WP_CRON. Si está definida como true, WordPress deja de depender de las visitas para activar WP-Cron. Esto es correcto solo cuando otro mecanismo fiable está llamando al sistema cron de WordPress.

Un error frecuente es invertir el orden seguro: desactivar WP-Cron y solo después intentar configurar un programador externo. Si la tarea del servidor no existe, apunta a una URL incorrecta o está bloqueada, las entradas futuras pueden quedarse pendientes.

4. Con WP-CLI, confirma que cron puede iniciarse y que el evento existe

Si el alojamiento ofrece SSH y WP-CLI, hay dos comprobaciones útiles. wp cron test prueba el sistema de activación de WP-Cron. Su documentación indica que el comando comprueba DISABLE_WP_CRON, avisa sobre ALTERNATE_WP_CRON e intenta iniciar cron por HTTP. Consulta wp cron test.

Para inspeccionar la cola sin cambiar la programación, usa:

wp cron event list --hook=publish_future_post --fields=hook,next_run_gmt,next_run_relative

El comando de listado está documentado en wp cron event list. Si aparece el hook de publicación futura y está vencido, la programación existe y la investigación debe centrarse en la activación o la ejecución. Si no aparece para una entrada que debería estar programada, revisa el estado de la entrada y el proceso que creó la programación.

Atención: los comandos que prueban o ejecutan cron pueden activar tareas vencidas de plugins, correo, mantenimiento o integraciones. No supongas que una prueba de ejecución es solo lectura.

5. Separa los fallos de activación de los fallos de ejecución

SeñalInterpretación probableSiguiente comprobación
El evento futuro no existeLa entrada no se programó como se esperaba o el evento fue eliminadoEstado de la entrada, fecha y código o plugin que programa
El evento existe y está vencidoWP-Cron no fue activado o no pudo iniciarseLoopback, DISABLE_WP_CRON, cron externo y bloqueos HTTP
Cron se inicia, pero la entrada no se publicaEl callback puede estar fallando durante la ejecuciónLogs PHP, conflictos y errores fatales
Solo falla en periodos sin visitasLa activación por tráfico puede ser insuficienteCron del servidor para una activación más predecible

6. Cuándo usar el cron del servidor

Para sitios que necesitan horarios más previsibles, la documentación de WordPress recomienda usar el programador del sistema para llamar a wp-cron.php en los intervalos definidos por la operación. Después de confirmar que ese disparo externo funciona, WP-Cron activado por visitas puede deshabilitarse con define( 'DISABLE_WP_CRON', true );. Consulta Hooking WP-Cron Into the System Task Scheduler.

En paneles de alojamiento esta función puede llamarse Cron Jobs, Scheduled Tasks o de forma similar. El nombre cambia, pero el objetivo es el mismo: ejecutar periódicamente una llamada que inicia la cola de WordPress. No lo confundas con crear una tarea del servidor para cada entrada.

Orden seguro de migración:

  1. Crea la tarea externa sin desactivar WP-Cron.
  2. Confirma que realmente se ejecuta en el servidor y procesa eventos vencidos.
  3. Supervisa al menos un ciclo de programación compatible con la frecuencia elegida.
  4. Solo entonces define DISABLE_WP_CRON como true si existe un motivo para evitar la activación por visitas.

7. Si cron se activa, busca errores de ejecución

Cuando el evento existe y el mecanismo cron está activo, pero la publicación sigue fallando, revisa los logs del servidor y, en un entorno de prueba, las herramientas de depuración de WordPress. La documentación de Debugging in WordPress explica WP_DEBUG y WP_DEBUG_LOG y recomienda staging o una copia de seguridad antes de hacer cambios.

En producción, no dejes mensajes de depuración visibles en pantalla. Los logs pueden contener rutas, datos de peticiones y otra información sensible. Activa el diagnóstico solo durante el tiempo necesario, recoge el error, corrige la causa y restaura la configuración normal.

WP-Cron o cron del servidor: qué cambia

AspectoWP-Cron activado por visitasCron del servidor llamando a WordPress
ActivaciónDepende de una oportunidad creada por una carga de páginaDepende del programador configurado en el servidor
HorarioPuede retrasarse durante periodos sin tráficoEs más predecible cuando la tarea externa funciona
ConfiguraciónComportamiento predeterminado de WordPressRequiere acceso al panel del alojamiento, SSH o soporte del proveedor
Riesgo operativoLos loopbacks y las restricciones HTTP pueden impedir el inicioUna tarea externa rota puede detener cron por completo si la activación interna también está deshabilitada

Rollback: cómo volver al comportamiento predeterminado

Si la migración a cron externo causa problemas, restaura la activación predeterminada eliminando la línea que define DISABLE_WP_CRON como true o cambiando el valor a false. Después confirma que el sitio puede realizar loopbacks y que aparecen nuevos eventos en la cola.

No elimines eventos cron en masa como primer intento. WordPress y los plugins comparten la misma cola para muchas rutinas. Primero identifica el hook afectado y la causa del retraso.

Flujo de diagnóstico en orden

  1. Confirma estado, fecha, hora y zona horaria de la entrada.
  2. Abre Salud del sitio y busca un fallo de loopback.
  3. Comprueba si DISABLE_WP_CRON está activo.
  4. Si tienes WP-CLI, prueba el mecanismo y lista publish_future_post.
  5. Si el evento está vencido, corrige la ruta de activación.
  6. Si cron se está activando, revisa los logs para detectar errores de ejecución.
  7. Si necesitas un horario más predecible, configura primero el cron externo y solo después considera desactivar la activación por visitas.
  8. Si el cambio empeora el escenario, haz rollback y vuelve al comportamiento predeterminado de WP-Cron.

Esta secuencia reduce el riesgo de confundir un desfase de zona horaria, poco tráfico, fallo de loopback, cron externo roto y un error PHP durante la publicación.

Temas de este artículocron do servidordiagnóstico WordPresspost agendadopublicação agendadaWordPressWP-Cron