Wie lösche ich Post-Revisionen?

9

Ich habe keine Begrenzung für die Anzahl der Revisionen festgelegt, sodass einige meiner Posts mehr als 20 Revisionen enthalten. Wie kann ich diese Revisionen löschen?

Übrigens, ich verwende WPMU und habe viele Blogs. Wie kann ich WordPress-Revisionen für alle meine Blogs löschen?

hugemeow
quelle

Antworten:

10

Dies ist eine viel sicherere Abfrage, die verwandte Einträge aus dem Postmeta und term_relationship entfernt, im Gegensatz zu Deathlocks- Abfragen in seiner Antwort.

Ändern Sie die {id} in die ID jeder Blogpost-Tabelle. Sie können diese Abfrage kombinieren, um alle Post-Tabellen gleichzeitig auszuführen. Versuchen Sie dies jedoch zuerst an einer Tabelle. Ich habe es oft bei einzelnen WP-Installationen verwendet.

DELETE a,b,c
FROM wp_{id}_posts a
LEFT JOIN wp_{id}_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_{id}_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Optimieren Sie nach dem Ausführen die Datenbank in phpmyadmin.

Fügen Sie diese Zeile oben in der Datei wp-config.php hinzu, um zukünftige Überarbeitungen zu verhindern:

define('WP_POST_REVISIONS', 0);

oder speichern Sie eine Revision:

define('WP_POST_REVISIONS', 1);
markratledge
quelle
Du hast recht, das ist auch sehr effizient ... habe meine Antwort in Eile gepostet und den WP MU-Teil auch nicht bemerkt. +1.
Deathlock
und wie man Revisionen entfernt, außer sagen wir die letzten 3?
Matoeil
2

Es gibt auch ein Plugin, WP Optimize , das Ihnen dabei helfen kann

Von der Website:

WP-Optimize ist ein WordPress 2.9 ++ - Tool zur Bereinigung und Optimierung von Datenbanken. PhpMyAdmin ist nicht erforderlich, um Ihre Datenbanktabellen zu optimieren.

Sie können Post-Revisionen, Kommentare in der Spam-Warteschlange und nicht genehmigte Kommentare mit wenigen Klicks entfernen.

darronz
quelle
Bitte beschreiben Sie, was das Plugin macht und wie es das Problem löst.
Fuxia
1
Es gibt viele Plugins, die Revisionen bereinigen und ohne phpmyadmin optimieren. Keiner von ihnen soll eindeutig mit WPMU oder Multisite zusammenarbeiten.
Markratledge
Wird dieses Plugin meiner Datenbank Schaden zufügen?
Hugemeow
Ich habe das Plugin auf einigen Websites verwendet, die ich ohne Probleme ausgeführt habe. Es ist jedoch immer eine gute Idee, zuerst Ihre Datenbank zu sichern (dies ist jedoch nur eine bewährte Methode).
Darronz
0

Mit dieser Abfrage können Sie alle Ihre Wordpress-Revisionen löschen:

DELETE FROM wp_posts WHERE post_type = "revision";

Deathlock
quelle
Ich habe mehr als 100 Blogs auf wpmu, also sollte ich laufen DELETE FROM wp_n_posts WHERE post_type = "revision"; für n mal, richtig? aber das ist ziemlich langweilig :(
hugemeow
0

Sie können diesen Code auch zur functions.phpDatei Ihres Themas hinzufügen :

if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 3);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);

Dieser Code prüft, ob ein WP_POST_REVISIONSLimit festgelegt wp-config.phpwurde. Wenn dies nicht der Fall ist, übergibt er einen Parameter an die Funktion, die das Nacharbeiten begrenzt. Im obigen Beispiel sind Beiträge auf 3 Revisionen beschränkt.

Dies ist eine gute Lösung, wenn Sie Themen für Personen erstellen, die nicht wissen, wie sie Code hinzufügen sollen (oder wollen).

Entnommen aus wp-functions.com

NickMcB
quelle
2
In dieser Antwort geht es nicht um das Löschen von Revisionen. Aber es ist ein guter Rat, wie Sie Revisionen für zukünftige Inhalte deaktivieren können.
Nilambar Sharma
0

Sie können das WP Sweep- Plugin verwenden, um Post-Revisionen zu bereinigen. Gehen Sie nach dem Aktivieren des Plugins zu Extras »Sweep, um Ihre WordPress-Datenbank zu bereinigen.

Ashin
quelle
0

Danke für die Antwort, markratledge. Etwas in der Syntax bezüglich der {id} hat bei mir nicht funktioniert. Ich habe {id} in 4009 geändert, eine meiner Post-IDs, aber keinen Erfolg. Ich habe eine Lösung unter https://dev-notes.eu/2017/11/manage-and-safely-delete-revisions-in-wordpress/ gefunden.

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';

Das hat gut funktioniert.

feli_x
quelle