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 variabledefine(‘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)