Solución a la "Programación perdida" de wordpress

Debido siempre a nuestra peculiar y apretada agenda, tanto en Geeky Theory como la demás red de blogs (Geeky Juegos y Geeky Viajes) solemos redactar nuestros artículos y tutoriales cuando buenamente podemos. Esto suele implicar en numerosas ocasiones, terminar a la tantas de la madrugada. Como es lógico, pretendemos siempre llegar a la mayor cantidad de público posible. Por ello prácticamente a diario programamos nuestros posts para que sean publicados en horas más adecuadas. También se aplica a la colaboraciones que nos mandáis.

El problema que nos hemos encontrado, ha sido que, en numerosas ocasiones, Wordpress pierde dicha programación sin explicación alguna. Hecho que significa que el post no se ha publicado, y sigue a la espera de que el usuario lo publique manualmente, o vuelva a programarlo.

¿Por qué ocurre esto?

Primero debemos echar un vistazo a como se las arregla Wordpress para realizar el proceso de publicado programado.

A la hora de hacer procesos rutinarios en los servidores, es muy común utilizar tareas cron, como bien hemos comentado en varias ocasiones la manera de aprovechar su potencial. Debido a que Wordpress no tienes acceso directo al servidor en sí, se vale de un cron virtual. Este cron se ejecuta cada vez que alguien visita la página.

Pero si nadie visita la página, o lo que es más común, si utilizas un sistema de cache para reducir el tráfico, consumo y aumentar la velocidad de tu página, resulta en que dicho servicio en muchas ocasiones no se ejecuta puesto que está tirando de los recursos almacenados en dicha cache, dando como resultado en la dichosa "programación perdida".

¿Cómo lo solucionamos?

Tenemos dos opciones, para realizar esto, dependiendo de nuestro nivel técnico os recomiendo una u otra:

Mediante un plugin:

Utilizar un plugin que nos lo hará de manera automática todo, con lo que en unos sencillos pasos lo deberíamos tener solucionado. Tenemos para este caso a WP Missed Schedule Fix Failed Future Posts.

Es tan simple como, instalar, activar y respirar tranquilos.

Lo que hará será comprobar si existe algún post con publicación perdida y lo auto-publicará.

Programar un cron real:

Tenemos preferencia por tener todo bajo control y saber lo que está pasando en todo momento en nuetro servidor, por eso preferimos crear nosotros mismos el servicio.

Utilizaremos los conocimientos aprendidos en el post que publicó Mario sobre como crear un cron en una máquina linux.

Crear un archivo ejecutable donde queramos: (por tenerlo ordenado lo podemos poner en el mismo directorio que el resto de tareas cron, /usr/local/ispconfig/server/scripts/)

sudo nano programacion_perdida.sh

(suelo utilizar nano por costumbre, pero con cualquier editor nos sirve)

E insertaremos lo siguiente:

wget -O /dev/null http://tudominio.com/wp-cron.php?doing_wp_cron

Esto lo que hará será solicitar la ejecución de dicho servicio y lo meterá en /dev/null (Un agujero negro que se lo traga todo).

Ahora crearemos el cron que ejecutará este archivo a cada hora. Es un proceso que no requiere mucha carga de trabajo por lo que podremos asignarle la frecuencia de ejecución que consideremos adecuada.

sudo crontab -eCon esto abriremos el archivo de configuración del cron. Y añadimos la siguiente línea: 0 * * * * /usr/local/ispconfig/server/scripts/programacion_perdida.shY ya tendremos listo el servicio. Y si estais viendo este tutorial significa que efectivamente funciona. Espero que os sirva de ayuda y no tengais que batallar con este sintoma/bug/chapuza de los chicos de Wordpres. Y a vosotros ¿os ha pasado alguna vez?¿como lo habeis solucionado?