WordPress

Error: Programación perdida. ¡No se han publicado mis entradas en WordPress!

Fotografía de Rob Bye - Unsplash.com

Programación perdida en WordPress – solución

Te has acostumbrado a la rutina de publicar entradas en tu blog con la regularidad de un reloj suizo, pero sabes que no siempre podrás publicar ese post diario que tanto esperan tus lectores: Hoy pueden ser tus vacaciones, mañana un imprevisto o, pasado ¿Quién sabe? Así que aprovechas y, cuando tienes tiempo, escribes varios artículos y los programas para que se publiquen llegado el momento.

Y ese momento llega pero… ¡¡No se han publicado!!

programacion-perdida-wordpress

¡Tranquilidad!, para todo hay  solución, y esta vez es algo bastante sencillo de arreglar: Basta con editar el post y pulsar “Publicar” pero… ¡No quieres que vuelva a pasar! ¿Verdad? En Loopeando.com te explicamos cómo prevenir el fallo de la “Programación perdida” en WordPress con plugins y a través de cron y, para los más curiosos, os explicamos por qué se produce.


¿Tienes prisa?

Soluciona el problema instalando este plugin.

Aunque desde Loopeando.com siempre recomendamos aprovechar cada piedra en el camino para aprender lo máximo posible. Así que si tienes algo más de tiempo, ¡sigue leyendo!

 

 

¿Cómo solucionar el fallo de “Programación perdida” en WordPress?

Os proponemos dos soluciones: Instalando un plugin o creando una tarea en el cron del servidor. Ambas soluciones tienen sus ventajas e inconvenientes, ¡os contamos cuáles son y cómo ponerlas en marcha!

Instalando un plugin:

Hay numerosos plugins que solucionarán el problema. Algunos de los más famosos son (clic en cada uno de ellos para descargar):

WP Scheduled Posts

WP-Cron Control

WP TimeZone

Si no sabes cómo instalar un plugin te recomendamos que leas la siguiente entrada. Es fácil, rápido, ¡y no te llevará más de 3 minutos!

Ventajas de este método
  • Es la solución más rápida y sencilla.
  • No requiere de conocimientos previos ni de acceso a determinadas partes del servidor que puedes tener vetadas.
Desventajas de este método

Creando una tarea cron en el servidor

[SE REQUIEREN CONOCIMIENTOS PREVIOS: ¿Qué es un servidor? | ¿Cómo acceder al panel de gestión o, si no lo hubiese, ¿Cómo acceder vía SSH? | ¿Qué es una tarea cron?]

Cada servidor es un mundo, y lo más probable es que tengáis habilitado el acceso a algún panel de gestión. En este ejemplo, vamos a explicar cómo se añade una tarea cron en el panel de gestión Plesk. En el caso de que no tengáis acceso al servidor, siempre podéis pedirle al soporte de vuestro hosting que os creen ellos mismos la tarea cron.

Si tenéis accesos SSH, también explicamos cómo hacerlo vía consola de comandos.

 

Solucionar vía panel plesk:

1º Si tenemos varios dominios, accedemos al dominio en el que queramos configurar la tarea cron. En caso de tener sólo un dominio, pasar al paso 2º.

2º Buscar la opción “Tareas programadas”. (¿No aparece la opción “Tareas programadas?”).

plesk_tareas-programadas-01

3º Pulsar en “Añadir tarea”:

plesk_tareas-programadas-02

4º Configurar conforme a la imagen.
plesk_tareas-programadas-03

El comando a introducir es:

wget -O /dev/null [TU DOMINIO]/wp-cron.php?doing_wp_cron

En el caso de Loopeando.com sería:

wget -O /dev/null https://www.loopeando.com/wp-cron.php?doing_wp_cron

Si la instalación de WordPress no estuviese en la raíz del servidor, habría que poner en el comando la ruta donde se encontrase dicha instalación. Por ejemplo, si está en la carpeta “foro”, el comando sería:

wget -O /dev/null https://www.loopeando.com/foro/wp-cron.php?doing_wp_cron

5º Aceptamos, y ¡Listo!

 

Ventajas de este método
  • Se soluciona el problema de raíz y se aprende haciéndolo.
  • Evita sobrecargar el blog haciendo que los tiempos de carga sean demasiado largos.
Desventajas de este método
  • Quizá no tengamos los accesos necesarios para realizarlo.
  • Estamos trabajando en el servidor, y debemos tener mucho cuidado con lo que estamos haciendo.

¿Te has atascado o tienes dudas? ¡Escríbenos un comentario!

 

¿Por qué se produce el fallo de “Programación perdida” en WordPress?

RESUMEN DE CONCEPTOS:

  • WordPress no tiene acceso al cron del servidor, por lo que crea su propio cron virtual que se ejecuta cuando alguien accede a la web.
  • Si nadie accede a la web durante algunas horas, la entrada que debió publicarse durante ese tiempo, puede perder su programación.
  • Algunos plugins de caché, también pueden evitar que se ejecuten tareas en el blog y por lo tanto que se pierda la programación.

Para que una entrada se publique cuando ha sido programada, debe existir un sistema que compruebe en cada minuto, si hay algo que publicar. En el caso de un servidor, de esa tarea se encargan las llamadas tareas cron.

Una tarea cron (cuyo nombre viene del Dios griego Chronos, la personificación del tiempo) es una tarea que se ejecuta en segundo plano cada cierto tiempo.

Si nosotros tenemos acceso al servidor, podemos programar tantas tareas cron como queramos, y ajustar que cada una de ellas realice una función determinada.

Por ejemplo:
– Todos los días, a las 00:00 horas, revisa cuál ha sido el post más leído y otorga una medalla a su autor.
– Una vez a la semana, vacía las papeleras donde han ido a parar todas las entradas y comentarios borrados.
– Comprueba cada 5 minutos, si existe algo pendiente de publicar y, si existiese, publícalo.

Y ese es precisamente el problema, que WordPress no tiene acceso al cron real del servidor. Así que los creadores del CMS más popular del momento, han solucionado el problema de una manera bastante ingeniosa: Han creado un cron virtual, que se ejecuta cada vez que alguien carga una página (Analizando: wp_cron.php).

¿Qué quiere esto decir? Que si yo tengo una entrada programada para que se publique a las 10:00 am, cuando un lector acceda a la web, por ejemplo a las 9:30, ese acceso activará el cron virtual y comprobará si debe publicar algo. Como no es hasta las 10:00 cuando debe publicar la entrada, no lo hará.

Por lo tanto, como ya habéis deducido, ¿Y si nadie entra en mi web a las 10:00? No debería haber problema, puesto que aunque alguien acceda a tu blog pasadas las 10:00, WordPress realizará la publicación de la entrada que tenía pendiente.

La teoría está muy bien, pero sigo sin entender por qué se produce el error de programación perdida.

En ocasiones, el tráfico de un blog es escaso, y eso hace que, si han pasado horas desde que debió publicarse una entrada, pero nadie ha activado ese cron virtual porque nadie ha entrado horas después de que debiese publicarse, la programación se pierde. Es algo que sucede con frecuencia en las entradas programadas para que se publiquen durante la madrugada (¿Y cómo lo soluciono?).

Otro problema lo suelen provocar los sistemas de caché, como W3 Total Caché (Recomendamos: ¿Cómo configurar W3 Total Caché para evitar el error de “Programación Perdida?). Estos plugins, cuya función es que nuestra web se cargue mucho más rápido, lo que hacen en realidad es almacenar copias de la web en HTML, por lo que cuando entra un lector, no se le carga el blog de nuevo a través de consultas PHP, sino que carga una copia del contenido que se generó en su momento. De esa manera, al no realizar consultas al sistema, no se ejecuta la tarea cron y por tanto, no se publican las entradas programadas.

 

Si te ha resultado útil esta entrada, ¡no olvides compartirla!

 

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

Escribir comentario

Haz clic aquí para dejar tu comentario