Autonomía digital y tecnológica

Código e ideas para una internet distribuida

El sistema de revisiones en WordPress: cómo deshabilitarlo o limitarlo, y cómo eliminar todas las revisiones

Imago voragine.net
[actualizado el ]

El sistema de revisiones de WordPress es una de esas grandes ideas que no usa más del uno por ciento de sus usuarios de WordPress que conozco. La mayoría de los blogs no necesitan un sistema de control de cambios. Desde mi punto de vista debería ser una opción deshabilitada por omisión, y que solo fuese funcional tras activarla voluntariamente.

Las revisiones que se generan automáticamente cada vez que hacemos un cambio en un post, ocupan varias veces más espacio en la base de datos que el contenido publicado. Por ejemplo, en voragine.net hay 225 post publicados y 910 revisiones. Esta cantidad extra de información hace que las consultas a la base de datos sean mucho más lentas, aumentando los tiempos de carga de la página.

En general, hace engordar la base de datos innecesariamente, consumiendo más espacio en disco del necesario, y haciendo más difícil su manipulación de cara a copias de seguridad, migraciones…

Cómo deshabilitar o limitar el sistema de revisiones

Además de estar activado por omisión, el sistema de revisiones de WordPress guarda cada una de las versiones de post, desde la primera. Podemos deshabilitarlo o configurarlo para que guarde no más de una cantidad determinada de revisiones añadiendo la siguiente línea al archivo wp-config.php:

define( 'WP_POST_REVISIONS', 0 );

Los valores 0 o false deshabilitan las revisiones; cualquier otro número positivo, indica el número de revisiones a guardar.

Las revisiones también se pueden deshabilitar incluyendo una función en el functions.php del theme, pero desde mi punto de vista, esta configuración no debería estar ligada al tema que se use, sino a la manera más general de usar WordPress.

Por supuesto existen plugins para gestionar el sistema de versiones, pero como siempre, todo lo que se pueda hacer sin plugins aligera nuestro WordPress y mejora su seguridad.

Cómo borrar las revisiones de la base de datos

Para eliminar todo rastro de revisión de nuestra base de datos tenemos que realizar la siguiente consulta, por ejemplo usando PHPMyAdmin:

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Esta consulta elimina todas las revisiones alojadas en la tabla wp_posts de la base de datos, pero también las asociaciones entre las revisiones y etiquetas y categorías, que se guardan en otras tablas cuando se asigna una categoría o etiqueta a un post aún no publicado.

Cuando hice esta consulta en la base de datos de voragine, además de las 910 revisiones, se eliminaron otros 2.000 registros de asociaciones entre revisiones y etiquetas o categorías.

6 comentarios

    • Por Jorge

    Genial, voy a añadir esa opción al wp-config. La verdad es que es una función molona… que NUNCA he usado.

    Eso sí, a nivel de tamaño de base de datos, de una BD de 1Gb, sólo logré rebajar unos 80Mb quitando las revisiones, me imaginaba que sería más. Espero que en el rendimiento se note más. Y si no, bueno, algo es algo :)

    1. Jorge, puedes comprobar con PHPMyAdmin si quedan revisiones en la tabla wp_posts de la base de datos. Si quedan registros con el valor revision en la columna post_type, es que se puede eliminar alguno más.

    • Por Bego •

    hola… y en la tabla wp_posts también están las revisiones de las páginas o solo de las entradas?

    1. Hola Bego, en la tabla wp_posts están todos los contenidos: entradas, páginas, revisiones, los elementos de la librería multimedia (imágenes y demás attachments), y si tienes custom post types también los contenidos que crees en ellos.

    • Por Joseyaz •

    A mi me funciona terminado en false y no en 0.
    define(‘WP_POST_REVISION’, false)

    1. Gracias por el comentario Joseyaz. Sí, puede depender de la versión de PHP y de otras configuraciones de tu servidor.

Dejar un comentario

*
*

 

No hay trackbacks