«Programación perdida» de contenidos programados en WordPress – ¿Qué es y cómo se soluciona?

Si llevas tiempo usando WordPress es más que probable que alguna vez te hayas encontrado un error por el que, tras programar la publicación de una entrada, un producto o incluso un cambio de precio en productos, este no se publique cuando debía, mostrando un error de «Programación perdida», con lo que te toca publicarlo manualmente.

Aunque no es un drama ni nada gravísimo, sí que te hace no aprovechar una de las virtudes de WordPress: la programación de publicación, que es tremendamente útil, especialmente para tiendas online.

¿Por qué motivos pasa la programación perdida de WordPress?

Este error tontorrón de WordPress, para quien suele usar la programación de entradas o cambios en precios en una tienda online puede llegar a ser bastante molesto, especialmente cuando esperas que aparezca un cambio de precio en un producto y no pasa, con el consiguiente trastorno para tu comercio electrónico.

Los motivos por los que puede suceder son varios, y estos son los más comunes…

Por los ajustes de zona horaria de WordPress

Aunque te parezca una bobada pasa a veces, hasta en las mejores casas.

Me he encontrado montones de veces que este problema venía derivado de que el usuario establecía una fecha y hora para su contenido, basado en su zona horaria, pero la zona horaria de WordPress estaba configurada distinta, y por tanto no se lanzaba el contenido cuando el usuario esperaba, y quedaba como programación perdida.

Después de una migración o actualización

Por algún motivo que desconozco, me ha pasado con algunos clientes que, tras una migración de servidor, o ciertas actualizaciones de WordPress, se han perdido programaciones de contenido.

No me pidas explicaciones, porque no las tengo, a veces se ha solucionado solo en la siguiente versión de WordPress, y en otras me tocó tomar medidas para solucionarlo.

Por falta de memoria disponible

También es posible que falte memoria del servidor disponible para poder ejecutar todas las acciones programadas, en cuyo caso deberíamos tratar de ampliarla.

Por la caché

Pues sí, un motivo de los más habituales es que surja el problema de programación perdida en WordPress a causa de la caché, o cachés, de tu sitio, y me explico…

Cuando aplicas cachés a tu web, lo que haces es crear copias estáticas de tu contenido, que se entregan a los visitantes en cada visita, mientras no haya nuevo contenido, comentarios, valoraciones, o haya visitas reales/nuevas/sin caché a alguna página o URL que antes no hubiese recibido visitas, etc.

Pues bien, la programación de contenidos en WordPress se lanza mediante una serie de procesos internos que lanza una aplicación llamada WP Cron, de la que he hablado largo y tendido en esta guía.

Pues resulta que si no se genera ninguna actividad nueva, que no esté en caché, el Cron de WordPress simplemente no se activa, y en consecuencia no se ejecutan las tareas programadas.

Y estas tareas que hace wp-cron.php son múltiples y variadas, como por ejemplo:

  • Copias de seguridad que tengas programadas con algún plugin.
  • Borrar archivos temporales.
  • Vigilar el espacio del disco.
  • Tareas de mantenimiento de WordPress.
  • Comprobación de actualizaciones de WordPress, temas y plugins.
  • Tareas programadas de cualquier tipo…

Esto puede pasarte tanto con la caché de objetos de tu sitio como a causa de la caché de una CDN como CloudFlare.

¿Cómo se soluciona la programación perdida de WordPress?

Bueno, pues lo primero que debes hacer siempre, da igual lo que hagas después incluso de esta misma guía, es comprobar que tu zona horaria coincide con la establecida en los ajustes de WordPress.

Revisa los ajustes de la zona horaria en WordPress

Para ello ve a los ajustes generales en la administración de tu WordPress y comprueba que la zona horaria está configurada a tu ubicación.

Y no elijas la zona horaria en formato UTC, es un error. Debes elegir la ciudad o región de tu zona horaria, para que WordPress cambie automáticamente también el horario de invierno y verano si fuese necesario, y esto solo lo hará si eliges tu ciudad.

Si tenías mal configurada la zona horaria podría ser el causante de la programación perdida, y si compruebas que se soluciona solo con esto, ya puedes dejar de leer, no necesitas más.

¿Qué cómo lo compruebas? Pues muy fácil, programa un cambio de un precio o la publicación de una entrada para dentro de unos minutos, poco rato, espera, y mira a ver si se ha realizado la publicación, cambio de precio o lo que sea.

Comprueba que funciona el cron de WordPress

Aunque esto no es una solución, antes de seguir con las siguientes posibles soluciones es buena idea hacer una comprobación de que está funcionando el cron de WordPress.

Comprobarlo es muy fácil, solo tienes que teclear una URL como la siguiente en tu navegador y pulsar INTRO en tu teclado para forzar la ejecución del WP Cron:

https://tudominio.com/wp-cron.php?setcronjob

Acuérdate de cambiar el dominio por el tuyo.

Aumenta el límite de memoria

Para descartar que no sea un problema de memoria disponible para la ejecución de las tareas del cron de WordPress, prueba a aumentar los límites de memoria, añadiendo lo siguiente al archivo wp-config.php:

define('WP_MEMORY_LIMIT', '768M');

La cantidad del ejemplo es eso, un ejemplo, súbela solo a lo que necesites para que se ejecute correctamente WordPress y sus procesos.

Configura el vaciado de las cachés

Para descartar que el culpable de la programación perdida no sean las cachés, configura tu plugin de caché para que se vacíe en cada nuevo contenido, nuevo comentario, etc.

En cada plugin es distinto el ajuste, así que no me enrollaré con esto, búscalo en los ajustes de las cachés de tu plugin de optimización y caché.

Cambia el cron de WordPress por un cron alternativo … también de WordPress

Algo que no mucha gente sabe es que WordPress tiene un cron alternativo, que puedes usar para sustituir el cron de WordPress por defecto, y que en ocasiones soluciona este tipo de problemas de programación perdida.

Para activarlo debes hacer 2 cosas:

  1. Desactivar el cron de WordPress
  2. Activar el cron alternativo de WordPress

Estos 2 pasos los consigues añadiendo estas líneas a tu archivo wp-config.php:

define('DISABLE_WP_CRON', true);
define('ALTERNATE_WP_CRON', true);

De paso, comprueba que no tengas otra línea que active el cron de WordPress, y si así fuera bórrala.

El método ALTERNATE_WP_CRON utiliza una redirección rápida y casi invisible para dirigir a un usuario entrante a una nueva solicitud mientras la anterior sigue en marcha, ejecutando trabajos en segundo plano.

Este es un método fácil y efectivo y funciona muy bien si no tienes acceso a crontab o a crear crons reales en el alojamiento de tu sitio.

Aunque este método añade algunos elementos a la URL de la página, sólo se activa cuando deban ejecutarse trabajos en segundo plano

Guarda los cambios en el archivo y comprueba si se ha solucionado el problema de la programación perdida.

Crea un cron real en tu hosting

Si no lo has solucionado con los métodos anteriores otra manera de solucionar la programación perdida de WordPress es mediante un cron real.

Este método conlleva 2 pasos:

  1. Desactivar el cron de WordPress.
  2. Crear una tarea cron real en tu alojamiento.

Para el primer paso simplemente añade lo siguiente al archivo wp-config.php para desactivar el cron de WordPress:

define('DISABLE_WP_CRON', true);

A continuación ve al panel de tu hosting y localiza la sección en la que puedas crear trabajos cron reales, y si no lo encuentras consulta a tu proveedor de hosting.

Debes crear un cron real con estos parámetros, cambiando la URL del ejemplo por la de tu web:

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

El intervalo de ejecución elígelo tú según las necesidades de tu web pero cada media hora suele estar bien para casi todos los sitios.

Aquí tienes un par de vídeos de cómo crear trabajos cron en un cPanel (el más común) y en el panel de SiteGround…

Crear trabajo cron en cPanel

Crear trabajo cron en SiteGround

Como verás en los vídeos, es más fácil hacerlo de lo que imaginabas.

Crea un cron mediante línea de comandos

Si tienes acceso a la consola de tu servidor, en vez de crear el cron real desde el panel del hosting puedes hacerlo desde la consola de comandos.

Los pasos también son 2:

  1. Desactivar el cron de WordPress.
  2. Crear una tarea cron real en tu alojamiento.

El primer paso haz lo mismo de antes, añade esto al archivo wp-config.php:

define('DISABLE_WP_CRON', true);

Crear un cron real con crontab

A continuación, desde el terminal de comandos, conéctate por SSH a tu servidor y, para empezar, abre crontab:

crontab -e

A continuación añade una línea como la siguiente:

*/30 * * * * curl https://midominio.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

O como esta otra:

*/30 * * * * cd /var/www/midominio.com/htdocs; php /var/www/midominio.com/htdocs/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Es importante que te acuerdes de cambiar la ruta del ejemplo a la correcta al archivo wp-cron.php de tu servidor.

Crear un cron real con WP-Cli

También puedes usar WP-Cli desde la consola de comandos, así:

*/30 * * * * cd /var/www/midominio.com/htdocs; wp cron event run --due-now > /dev/null 2>&1

En los ejemplos que he puesto se ejecutará el cron cada 30 minutos, si quieres cámbialo a */10*/5 o al o que sea, tú mismo.

Utiliza un plugin para solucionar la programación perdida

Además de los métodos anteriores, también hay plugins especializados en este problema que, cada uno a su manera, ofrecen posibles soluciones a la programación perdida en WordPress.

Los más interesantes son los siguientes…

Scheduled Post Trigger

Este plugin es muy sencillo de usar, solo tienes que instalarlo y activarlo.

Lo que hace es que comprueba si hay alguna tarea programada en el cron de WordPress cada vez que hay una visita a tu sitio.

Ahora bien, este plugin tiene algunas carencias:

  • No funcionará si no tienes bien configurada la zona horaria del sitio como vimos arriba.
  • Puede no funcionar si el problema proviene de la caché, también como vimos antes.
  • En sitios con mucho tráfico puede generar tal cantidad de consultas que rompa tu web.

Así que puedes probarlo como primera opción, antes que cualquiera de las anteriores, lo mismo es lo único que necesitas, pero cuidado en sitios de mucho tráfico o será peor el remedio que la enfermedad.

Missed Scheduled Posts Publisher

Este plugin de la empresa de alojamiento WP Engine utiliza una combinación de varias técnicas para comprobar cada 15 minutos si hay alguna programación perdida, en cuyo caso intenta publicar automáticamente.

Igual que el anterior, no necesitas configurar nada, simplemente es instalar y activar.

WP Missed Schedule

Este plugin alojado en GitHub también ofrece una alternativa para solucionar la programación perdida en WordPress.

Una vez lo descargues e instales manualmente el plugin, actívalo.

Ya está, no necesita tampoco configuración alguna, ni tiene pantalla de ajustes.

Si quieres, eso sí, cuando esté activo, puedes ir a la pantalla de plugins activos y haz clic en el enlace «Miss» para comprobar programaciones perdidas que haya detectado y solucionado el plugin, y así compruebas que está funcionando correctamente.

En realidad no tienes que hacer nada, solo comprobar que el plugin consigue publicar y soluciona la programación perdida de WordPress.


Bueno, y creo que ya está. Si conoces algún método más para solucionar el problema de la programación perdida estamos deseando conocerlo, y si no tienes inconveniente lo añadiré a la guía, para futuras consultas.

(9 votos, promedio: 4.9) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

1 comentario en “«Programación perdida» de contenidos programados en WordPress – ¿Qué es y cómo se soluciona?”

Deja un comentario

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

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido