programación perdida en wordpress

Solución sin plugins al fallo de la programación perdida en WordPress

Trabajas tus post con tiempo, y quieres que se publiquen un día y hora programados.

Preparas programaciones automáticas en tus redes sociales, para compartir tus post.

Llega el momento.

Se comparte en redes sociales, y cuando alguien quiere entrar, se encuentra un bonito fallo. ¿Qué paso con tu post que no se publico?

Pues que al entrar en tu listado de entradas te encuentras el fallo «programación perdida».

Eso mismo me ha pasado esta mañana con mi post de MailRelay y Magic Action Box y gracias a Iñigo del Rio Arrieta y Pablo Rodríguez que me avisaron me di cuenta a tiempo.

Programación perdida en WordPress. ¿Por qué ocurre?

El problema se encuentra en la forma en la que WordPress comprueba si hay algo programado.

En general para comprobar si hay algo programado, o realizar tareas rutinarias, en los sistemas se usa cron. Puedes programar en tu servidor de alojamiento tareas cron para que se ejecuten cada cierto periodo, por ejemplo cada media hora, cada hora, una vez al día, un día determinado de la semana, etc…

Cuando este cron se ejecuta en WordPress, mira si hay entradas programadas y las publica.

Pero WordPress, como no tiene acceso directo a tu servidor, no tiene un cron real, si no virtual. El cron de wordpress es el fichero wp-cron.php y se ejecuta cuando carga una página de tu WordPress.

¿Pero qué ocurre, si cuando tenias una entrada programada, no entra nadie a tu sitio web?, o bien y más habitual, estas usando un plugin de cache, como WP Super Cache o W3 Total Cache. Pues que este fichero se queda cacheado y no carga cuando debería, dando un error de programación perdida en posts.

Ese fue mi problema, usar W3 Total Cache, y Cloudfront. Y como no pienso renunciar a la velocidad que me da, necesito una solución.

Y tengo 2 soluciones a este problema

Te doy dos soluciones. Una más técnica, tocando en el servidor, y una a traves de plugin.

Me gusta más la primera, porque no necesitamos instalar un plugin más en nuestro WordPress. Y además no es difícil de realizar.

Solución 1. Programar un cron real para WordPress

Con esta solución lo que vamos a hacer es crear una tarea cron real en WordPress, para que sea el servidor el encargado de mirar que hay pendiente de hacer.

Para ello, si usas Cpanel, haz lo siguiente:

  1. Baja hasta Avanzado.
  2. Entra en Cron jobs o Tareas Cron.
  3. En agregar nueva tarea de Cron, Elige una configuración horaria predeterminada, o elige una a una.
  4. Y en comando inserta:
    wget -O /dev/null http://tudominio.com/wp-cron.php?doing_wp_cron
    programacion-perdida-en-wordpress-01
  5. Recuerda sustituir tudominio.com por el de tu propia página Web.
  6. Si tienes unmultisitio, tendrás que crear una tareacron por cadasubsitio que tengas
    1. Si es subdominio: wget -O /dev/null http://subdominio.tudominio.com/wp-cron.php?doing_wp_cron
    2. Si es subdirectorio: wget -O /dev/null http://tudominio.com/subdirectorio/wp-cron.php?doing_wp_cron
  7. Para finalizar, cada vez que añadas uno, por supuesto haz clic en añadir tarea cron.

El tiempo es el que elijas, puedes ponerlo sin problemas cada 5 o 15 minutos, o cada hora. Diferente seria si esta tarea fuera algo que suponga mucha carga al servidor, pero no es el caso.

Solución 2. Instala un plugin.

En este caso el plugin se llama WP Missed Schedule Fix Failed Future Posts, y es muy sencillo de usar.

Instalar, activar y listo.

No lleva configuración. El solo se encarga de comprobar cada 5 minutos si algún post esta en estado «programación perdida», y lo auto-publica.

¿Y yo qué solución he usado?

Pues he usado la primera solución, y si estas leyendo este artículo es que funciona. Intento dentro de lo posible no instalar plugins, para no sobrecargar mi WordPress, que ya ando al limite.

No me parece tan complicado de realizar el crear tu propia tarea cron, y es algo que lo haces una vez y listo.

Te recomiendo crear ya tu tarea cron, incluso aunque nunca hayas tenido este error, y así nunca te encontraras el temido Programación perdida en WordPress.

¿Has tenido alguna vez este error? ¿Como has solucionado la programación perdida en WordPress?

Foto Propiedad de Wade Morgen

EN ESTE ARTÍCULO:

comparte este artículo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

no dejes de leer...

10 comentarios en “Solución sin plugins al fallo de la programación perdida en WordPress”

  1. Hola Javier, si utilizas el cron, puedes deshabilitar que lo haga el propio WordPress con cada visita, tan simple como añadir esta línea en el wp-config.php:

    define(‘DISABLE_WP_CRON’, true);

    antes de esta línea:
    /* That’s all, stop editing! Happy blogging. */

    Con esto ganas algunos milisegundos de ejecución de la página, aunque con el W3 Total Cache lo tienes minimizado.

    Saludos

    1. Hola tocayo!
      Pues si, esa opción ya la conocía, aunque no la incluí en el post por no liar más la parte técnica, pero en mi propio blog esta implementada.

      Pero me parece muy buena tu aportación para quien se anime más a trastear.

      Gracias!

  2. Buenas!!

    Llegue a tu post por el motivo que lo escribiste, probé con tu sugerencia y me siguío tirando error use un rato más google y encontré esta otra alternativa wget -q -O – tudominio.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 (técnicamente no se las diferencias, solo comparto por si alguien tiene el mismo problema)

    Saludos y muchas gracias por el aporte!!!

    1. Gracias proxo.
      Tecnicamente lo podias haber dejado asi: wget -q http://tudominio.com/wp-cron.php?doing_wp_cron
      Con -q lo que le dices es que no tenga salida. Que es lo mismo que le indicamos con -O /dev/null, o >/dev/null 2>&1.
      En todo caso lo que has hecho ha sido decirle que no tenga salida, y que lo que salga sea en un fichero standar (-O -), y lo mande a la pantalla /dev/null 2>&1 que es como decirle que no salga en ningún sitio.
      En todo caso, gracias por compartir, una alternativa para a los que no les funcione mi comando.
      Un saludo.

  3. Hola,
    Gracias Javier por este post tan útil que me ha ahorrado horas de investigación! 🙂
    No me ha funcionado ni tu comando ni el que propone Proxo, y creo que el plugin que propones ya no está disponible. Pero gracias a tu enlace e encontrado el plugin WP TIMEZONE ( https://wordpress.org/plugins/wp-timezone/ ) y … por fin ya puedo programar posts!!.
    Un abrazo.

    1. Hola Sonia.

      Pues gracias por el aviso. Voy a probar el comando, que en principio al ser una tarea cron debe de seguir funcionando, pero como han cambiado tanto las versiones de WordPress, puede que haya que cambiar algo. De todos modos, el plugin que has puesto esta bien tambien, y nos facilita el proceso.

      Un abrazo.

  4. Hola Javier,

    Gracias por tu solución porque la verdad no sabia el motivo. A mi me ha sucedido con el plugin Wp Rocket y creo que la solución es añadir la ruta a la opción que el propio plugin trae de nunca cachear las siguientes urls.

    En principio añadiendo ahí la ruta /wp-cron.php debería funcionar.

Los comentarios están cerrados.

Acceso gratuito
a la Academia de
Hormigas en la Nube

+20 cursos disponibles sobre herramientas, marketing y ventas

Por tiempo limitado estoy regalando el acceso a la librería de recursos de la Academia de Hormigas en la Nube.

Cursos de ActiveCampaign, Elementor, Beaver Builder, WordPress, Copywriting, ventas, email marketing y más te estan esperando dentro. Disponible gratis por tiempo limitado.

Mockup escritorio herramientas
Ir arriba