Einer meiner Kunden ist in Bezug auf Anzahl der Posts und Traffic auf einem ziemlich großen Blog. Ich versuche, ihre Datenbank auf eine überschaubare Größe zu bringen, und eine Sache, die sich aufbaut, sind buchstäblich Zehntausende von Post-Revisionen.
Ich habe die Wordpress-Konfiguration bereits so eingestellt, dass die Anzahl der zukünftigen Revisionen auf zwei begrenzt wird:
define('WP_POST_REVISIONS', 2);
Ich möchte aber alle vorhandenen Revisionen löschen.
Frage 1 : Ist es sicher, alle Zeilen in der Tabelle wp_posts, die einen Revisionstyp post_type haben, direkt zu löschen? (Ich habe widersprüchliche Antworten dazu gesehen - aber ich würde es gerne so machen können, wenn es sicher ist).
Frage 2 : … und dies ist nur dann relevant, wenn ich NICHT einfach das einfache Löschen aus Frage 1 durchführen sollte:
Ich habe diese Antwort gefunden , bei der songdogtech eine Datenbankabfrage zum sicheren Löschen bereitstellt, aber (1) sie ist speziell eine Antwort auf eine Frage mit mehreren Standorten (dies ist eine einzelne Site) und (2) ich habe die Site gerade auf 3.6 aktualisiert, einschließlich Datenbankänderungen . (Ich bin also nicht in der Lage, Datenbankabfragen zu lesen, um genau zu wissen, was dort vor sich geht und ob es für eine einzelne Site in WP 3.6 funktionieren würde
quelle
1. Backup DB 2. Backup DB Again
Ich mag diesen Teil, +1 dafür.$ wp post delete $(wp post list --post_type='revision' --format=ids)
Die bisher angegebenen Details sind bestenfalls unvollständig, und die Abfrage a, b, c ist nicht gut - möglicherweise sogar gefährlich. Es wird vergessen, viele potenzielle Abhängigkeiten zu berücksichtigen. Es gibt eine umfassende Diskussion und besser fragt hier
Es gibt auch diese überarbeitete Version der Abfrage, die viel besser sein sollte, aber in einer Entwicklungsumgebung und einem Backup mit geringem Risiko getestet werden sollte:
Speziell:
Diese Abfrage verarbeitet ältere Daten, bei denen WordPress möglicherweise dieselbe object_id in der Tabelle wp_term_relationships für einen Beitrag und einen Link verwendet. Durch Ausführen der anderen Versionen dieser Abfrage a, b, c können Sie auch unbeabsichtigt Linkdaten löschen. Dies ist bei neueren Installationen von WordPress weniger ein Problem.
Wenn Sie diese Version der Abfrage ausführen und 0 Löschvorgänge erhalten, bedeutet dies nur, dass Ihre Tabelle wp_term_taxonomy keine Einträge für 'link_category' enthält. Sie können dies überprüfen, indem Sie diese Tabelle überprüfen, dann einfach die letzte Zeile entfernen und die Abfrage erneut ausführen.
Stellen Sie jedoch sicher, dass Sie die Ergebnisse sichern, testen und überprüfen, bevor Sie sie für Produktionsdaten verwenden. Diese Abfrage hat eine meiner überarbeiteten wp_posts-Tabellen nach der Optimierung von 300 MB auf 5 MB reduziert.
quelle
SQL-Abfrage ausführen:
HINWEIS: Die obige Abfrage „löscht nur Beiträge, die als Revisionen markiert sind. Wenn Sie aus irgendeinem Grund eine Revision mit einem Tag oder einer Kategorie verknüpft haben, die dann entfernt wurde, als der endgültige Beitrag veröffentlicht wurde, haben Sie zusätzliche Einträge in anderen Tabellen, z. B. Begriffen. “ Die richtige Abfrage, um alle Ihre Revisionen sicher zu entfernen, lautet wie folgt (ändern Sie das Tabellenpräfix nach Bedarf):
quelle