Un de mes clients est sur un blog assez volumineux en termes de nombre de messages et de trafic. J'essaie de réduire sa base de données à une taille gérable, et une chose qui gonfle est littéralement des dizaines de milliers de révisions de poste.
J'ai déjà défini la configuration de Wordpress pour limiter le nombre de révisions à l'avenir à deux:
define('WP_POST_REVISIONS', 2);
Mais je veux supprimer toutes les révisions existantes.
Question 1 : Est-il sûr de supprimer directement toutes les lignes de la table wp_posts qui ont un post_type de révision? (J'ai vu des réponses contradictoires à ce sujet, mais j'aimerais pouvoir le faire de cette façon si c'est sûr).
Question 2 : … et cela n'est pertinent que si je ne devrais PAS simplement supprimer directement la première question:
J'ai trouvé cette réponse où songdogtech fournit une requête de base de données pour supprimer en toute sécurité, mais (1) c'est spécifiquement en réponse à une question multisite (c'est un seul site) et (2) je viens de mettre à jour le site en 3.6, qui comprenait des changements de base de données . (Donc, je ne suis pas assez qualifié pour lire les requêtes de base de données pour savoir exactement ce qui s'y passe et si cela fonctionnerait pour un seul site dans WP 3.6
la source
1. Backup DB 2. Backup DB Again
, J'aime cette partie, +1 pour cela.$ wp post delete $(wp post list --post_type='revision' --format=ids)
Les détails fournis jusqu'à présent sont au mieux incomplets et la requête a, b, c n'est pas bonne - potentiellement même dangereuse. Il oublie de prendre en compte de nombreuses dépendances potentielles. Il y a une discussion complète et de meilleures requêtes ici
Il y a aussi cette version révisée de la requête qui devrait être bien meilleure, mais testez dans un environnement de développement à faible risque et sauvegardez:
Plus précisément:
Cette requête gère les données plus anciennes où WordPress peut utiliser le même object_id dans la table wp_term_relationships pour un article et un lien. En exécutant les autres versions de cette requête a, b, c, vous pouvez également supprimer involontairement les données de lien. Ce n'est pas autant un problème avec les nouvelles installations de WordPress.
Si vous exécutez cette version de la requête et obtenez 0 suppressions, cela signifie simplement que vous n'avez aucune entrée «link_category» dans votre table wp_term_taxonomy. Vous pouvez vérifier en vérifiant ce tableau, puis supprimez simplement cette dernière ligne et réexécutez la requête.
Mais assurez-vous de sauvegarder, tester et vérifier les résultats avant de les utiliser sur les données de production. Cette requête a pris une de mes tables wp_posts gonflées par révision de 300 Mo à 5 Mo après optimisation.
la source
Exécutez la requête SQL:
REMARQUE: La requête ci-dessus "supprime simplement les publications marquées comme révisions. Si, pour une raison quelconque, vous avez associé une révision à une balise ou à une catégorie qui a ensuite été supprimée lors de la publication du message final, vous aurez des entrées supplémentaires dans d'autres tableaux tels que les termes. » La requête appropriée pour supprimer en toute sécurité toutes vos révisions est la suivante (modifiez le préfixe du tableau si nécessaire):
la source