💾 ¿Cómo funciona el autoguardado en WordPress?

Somos Roberto y Francisco, un pequeño equipo dedicado al desarrollo web especializado en las cuestiones técnicas de las plataformas WordPress y WooCommerce. Realizamos consultoría y formación, desarrollamos plugins y temas, optimizamos, securizamos, respondemos a incidentes de seguridad y mantenemos sitios. Fundada en 2012, somos el apoyo técnico de más de un centenar de proyectos web en España y Alemania, además formamos parte activa de la comunidad WordPress.

WordPress tiene esta funcionalidad en el núcleo desde la versión 3.6 (2013) y está específicamente pensada para recuperar al menos parte del trabajo en caso de errores humanos🙃 o técnicos 🛠️.

El autoguardado funciona por defecto

Cuando haces cambios sobre un artículo, WordPress por defecto guarda esos cambios en dos sitios distintos:
⏳ En tu navegador, cada 15 segundos
⌛️ En el servidor, cada 60 segundos 

💔 De este modo si tienes un error humano o te quedas si conexión vas a tener una copia en tu navegador de como mucho los últimos 15 segundos y, si tu ordenador se desgracia o eliminas la caché del navegador, cuando entres de nuevo esa copia será como mucho de los últimos 60s. 

🤔 ¿Cómo funciona en la práctica este sistema?

Depende de cada caso, pero vamos a fijarnos en el nuevo editor.

🤖 Si empiezas a escribir un artículo, va a ir guardando automáticamente los contenidos, aunque no le des a guardar, como quien escribe un documento en Google Docs. 

PERO desde el momento que lo publicas, lógicamente no vas a querer que cualquier cambio que hagas mientras editas quede publicado (esto mostraría cambios que quizás no tengas aún terminados)

📄📄Así que para poder autoguardarlo pero que ese guardado no quede publicado lo que hace WordPress es guardarlo como revisión, que son un registro con todos los cambios que haces sobre el contenido.

Crea un histórico, para que puedas volver atrás si así lo deseas.

Así que, una vez está publicado, si haces cambios y algo falla (o te vas sin guardarlos), al volver al artículo verás un mensaje como este, invitándote a revisar y en su caso recuperar la versión autoguardada.

❗️Un detalle MUY IMPORTANTE es que el autoguardado solo guarda: El título, el contenido principal y el extracto.

Es decir: No va a guardar categorías seleccionadas ni campos personalizados (como los que añade Yoast SEO al final del artículo). 

🧑‍💻 ¿Cómo funciona técnicamente?

(También enfocándonos en el nuevo editor).
Lo hace a través de la clase AutosaveMonitor y la función autosave que encontramos en wp-includes/js/dist/editor.js 

La clase AutosaveMonitor revisa entre otras condiciones si ha habido algún cambio en el contenido a través de la función isEditedPostDirty y lanza autosave, que recibe si lo que debe hacer en este momento es un guardado local o en el servidor.

💻 En caso de que sea guardado local, llama la función localAutosaveSet , esta función almacena en el navegador usando window.sessionStorage una variable con nombre wp-autosave-block-editor-post-[id] (siendo [id] el id del post o poniendo auto-draft si aún no tiene id) y cuyo contenido es un JSON con los campos post_title, content y excerpt

☁️ Si toca que este guardado se haga en remoto, llama la función estándar de guardado savePost indicándole isAutosave: true . Esto termina haciendo una llamada a la API en /wp-json/wp/v2/posts/[id]/autosaves?_locale=user incluyendo content, excerpt, status y title 

Aunque dependiendo del caso lo vemos como revisión o no. Técnicamente sigue guardando revisiones:

  • Si es borrador: el autoguardado es principal y el guardado manual si es antiguo es revisión.
  • Si está publicado: el guardado manual es principal y autoguardado es revision. 

Las revisiones se almacenan con un nuevo ID en la tabla wp_posts para esa revisión, siendo el post_type revision y se enlaza con el ID original poniéndolo en post_parent.

🪧Hasta aquí la turra técnica. 

💾 Finalmente, un consejo.

Si tu sitio tiene muchos artículos, las revisiones antiguas no son importantes y quieres evitar un crecimiento loco de la base de datos, recomiendo limitar el número de revisiones que se guardan en WordPress. 

Esto lo puedes hacer a través de un plugin es.wordpress.org/plugins/wp-rev… o definiendo la variable
define(‘WP_POST_REVISIONS’, 10);
en wp-config.php, siendo el número (en este caso 10) el número de revisiones pasadas que quieres guardar (se van eliminando las más antiguas) 

Deja una respuesta

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