Uno de mis clientes está en un blog bastante grande en términos de cantidad de publicaciones y tráfico. Estoy tratando de reducir su base de datos a un tamaño manejable, y una cosa que está aumentando es literalmente decenas de miles de revisiones posteriores.
Ya configuré Wordpress config para limitar el número de revisiones en el futuro a dos:
define('WP_POST_REVISIONS', 2);
Pero quiero eliminar todas las revisiones existentes.
Pregunta 1 : ¿Es seguro eliminar directamente todas las filas de la tabla wp_posts que tienen un post_type de revisión? (He visto respuestas contradictorias sobre esto, pero me encantaría poder hacerlo de esta manera si es seguro).
Pregunta 2 : ... y esto solo es relevante si NO debo simplemente eliminar directamente de la pregunta uno:
Encontré esta respuesta donde songdogtech proporciona una consulta de base de datos para eliminar de forma segura, pero (1) está específicamente en respuesta a una pregunta multisitio (este es un sitio único) y (2) acabo de actualizar el sitio a 3.6, que incluyó cambios en la base de datos . (Por lo tanto, no soy lo suficientemente hábil en la lectura de consultas de bases de datos para saber exactamente lo que está sucediendo allí y si funcionaría para un solo sitio en WP 3.6
fuente
1. Backup DB 2. Backup DB Again
, Me gusta esta parte, +1 por esto.$ wp post delete $(wp post list --post_type='revision' --format=ids)
Los detalles proporcionados hasta ahora son incompletos en el mejor de los casos, y la consulta a, b, c no es buena, potencialmente incluso peligrosa. Se olvida de tener en cuenta muchas de las dependencias potenciales. Hay una discusión completa y mejores consultas aquí
También existe esta versión revisada de la consulta que debería ser mucho mejor, pero probar en un entorno de desarrollo y copia de seguridad de bajo riesgo:
Específicamente:
Esta consulta maneja datos más antiguos donde WordPress podría estar usando el mismo object_id en la tabla wp_term_relationships para una publicación y un enlace. Al ejecutar las otras versiones de esta consulta a, b, c, también puede eliminar involuntariamente los datos del enlace. Esto no es tanto un problema con las nuevas instalaciones de WordPress.
Si ejecuta esa versión de la consulta y obtiene 0 eliminaciones, solo significa que no tiene entradas 'link_category' en su tabla wp_term_taxonomy. Puede verificarlo verificando esa tabla, y luego simplemente elimine esa última línea y vuelva a ejecutar la consulta.
Pero asegúrese de hacer una copia de seguridad, probar y verificar los resultados antes de usar los datos de producción. Esta consulta tomó una de mis tablas wp_posts de 300 MB hasta 5 MB después de la optimización.
fuente
Ejecute la consulta SQL:
NOTA: La consulta anterior "simplemente elimina la publicación marcada como revisiones. Si por algún motivo asocia una revisión con una etiqueta o una categoría que luego se eliminó cuando se publicó la publicación final, tendrá entradas adicionales en otras tablas, como los términos ". La consulta adecuada para eliminar de forma segura todas sus revisiones es la siguiente (cambie el prefijo de la tabla según sea necesario):
fuente